drivers/acpi/nfit/nfit.h
Source file repositories/reference/linux-study-clean/drivers/acpi/nfit/nfit.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/acpi/nfit/nfit.h- Extension
.h- Size
- 9832 bytes
- Lines
- 353
- Domain
- Driver Families
- Bucket
- drivers/acpi
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/workqueue.hlinux/libnvdimm.hlinux/ndctl.hlinux/types.hlinux/acpi.hacpi/acuuid.h
Detected Declarations
struct nfit_spastruct nfit_dcrstruct nfit_bdwstruct nfit_idtstruct nfit_flushstruct nfit_memdevstruct nfit_memstruct acpi_nfit_descstruct nd_blk_addrstruct nfit_blkstruct nfit_blk_mmioenum nvdimm_family_cmdsenum nvdimm_bus_family_cmdsenum nfit_uuidsenum nfit_root_notifiersenum nfit_dimm_notifiersenum nfit_ars_stateenum nfit_mem_flagsenum scrub_flagsenum scrub_modeenum nd_blk_mmio_selectorfunction nfit_mce_register
Annotated Snippet
struct nfit_spa {
struct list_head list;
struct nd_region *nd_region;
unsigned long ars_state;
u32 clear_err_unit;
u32 max_ars;
struct acpi_nfit_system_address spa[];
};
struct nfit_dcr {
struct list_head list;
struct acpi_nfit_control_region dcr[];
};
struct nfit_bdw {
struct list_head list;
struct acpi_nfit_data_region bdw[];
};
struct nfit_idt {
struct list_head list;
struct acpi_nfit_interleave idt[];
};
struct nfit_flush {
struct list_head list;
struct acpi_nfit_flush_address flush[];
};
struct nfit_memdev {
struct list_head list;
struct acpi_nfit_memory_map memdev[];
};
enum nfit_mem_flags {
NFIT_MEM_LSR,
NFIT_MEM_LSW,
NFIT_MEM_DIRTY,
NFIT_MEM_DIRTY_COUNT,
};
#define NFIT_DIMM_ID_LEN 22
/* assembled tables for a given dimm/memory-device */
struct nfit_mem {
struct nvdimm *nvdimm;
struct acpi_nfit_memory_map *memdev_dcr;
struct acpi_nfit_memory_map *memdev_pmem;
struct acpi_nfit_control_region *dcr;
struct acpi_nfit_system_address *spa_dcr;
struct acpi_nfit_interleave *idt_dcr;
struct kernfs_node *flags_attr;
struct nfit_flush *nfit_flush;
struct list_head list;
struct acpi_device *adev;
struct acpi_nfit_desc *acpi_desc;
enum nvdimm_fwa_state fwa_state;
enum nvdimm_fwa_result fwa_result;
int fwa_count;
char id[NFIT_DIMM_ID_LEN+1];
struct resource *flush_wpq;
unsigned long dsm_mask;
unsigned long flags;
u32 dirty_shutdown;
int family;
};
enum scrub_flags {
ARS_BUSY,
ARS_CANCEL,
ARS_VALID,
ARS_POLL,
};
struct acpi_nfit_desc {
struct nvdimm_bus_descriptor nd_desc;
struct acpi_table_header acpi_header;
struct mutex init_mutex;
struct list_head memdevs;
struct list_head flushes;
struct list_head dimms;
struct list_head spas;
struct list_head dcrs;
struct list_head bdws;
struct list_head idts;
struct nvdimm_bus *nvdimm_bus;
struct device *dev;
struct nd_cmd_ars_status *ars_status;
struct nfit_spa *scrub_spa;
struct delayed_work dwork;
Annotation
- Immediate include surface: `linux/workqueue.h`, `linux/libnvdimm.h`, `linux/ndctl.h`, `linux/types.h`, `linux/acpi.h`, `acpi/acuuid.h`.
- Detected declarations: `struct nfit_spa`, `struct nfit_dcr`, `struct nfit_bdw`, `struct nfit_idt`, `struct nfit_flush`, `struct nfit_memdev`, `struct nfit_mem`, `struct acpi_nfit_desc`, `struct nd_blk_addr`, `struct nfit_blk`.
- Atlas domain: Driver Families / drivers/acpi.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.