drivers/nvdimm/Kconfig

Source file repositories/reference/linux-study-clean/drivers/nvdimm/Kconfig

File Facts

System
Linux kernel
Corpus path
drivers/nvdimm/Kconfig
Extension
[no extension]
Size
5679 bytes
Lines
168
Domain
Driver Families
Bucket
drivers/nvdimm
Inferred role
Driver Families: build/configuration rule
Status
atlas-only

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.

Dependency Surface

Detected Declarations

Annotated Snippet

# SPDX-License-Identifier: GPL-2.0-only
menuconfig LIBNVDIMM
	tristate "NVDIMM (Non-Volatile Memory Device) Support"
	depends on PHYS_ADDR_T_64BIT
	depends on HAS_IOMEM
	depends on BLK_DEV
	select MEMREGION
	help
	  Generic support for non-volatile memory devices including
	  ACPI-6-NFIT defined resources.  On platforms that define an
	  NFIT, or otherwise can discover NVDIMM resources, a libnvdimm
	  bus is registered to advertise PMEM (persistent memory)
	  namespaces (/dev/pmemX). A PMEM namespace refers to a
	  memory resource that may span multiple DIMMs and support DAX
	  (see CONFIG_DAX).

if LIBNVDIMM

config BLK_DEV_PMEM
	tristate "PMEM: Persistent memory block device support"
	default LIBNVDIMM
	select DAX
	select ND_BTT if BTT
	select ND_PFN if NVDIMM_PFN
	help
	  Memory ranges for PMEM are described by either an NFIT
	  (NVDIMM Firmware Interface Table, see CONFIG_ACPI_NFIT), a
	  non-standard OEM-specific E820 memory type (type-12, see
	  CONFIG_X86_PMEM_LEGACY), or it is manually specified by the
	  'memmap=nn[KMG]!ss[KMG]' kernel command line (see
	  Documentation/admin-guide/kernel-parameters.rst).  This driver converts
	  these persistent memory ranges into block devices that are
	  capable of DAX (direct-access) file system mappings.  See
	  Documentation/driver-api/nvdimm/nvdimm.rst for more details.

	  Say Y if you want to use an NVDIMM

config ND_CLAIM
	bool

config ND_BTT
	tristate

config BTT
	bool "BTT: Block Translation Table (atomic sector updates)"
	default y if LIBNVDIMM
	select ND_CLAIM
	help
	  The Block Translation Table (BTT) provides atomic sector
	  update semantics for persistent memory devices, so that
	  applications that rely on sector writes not being torn (a
	  guarantee that typical disks provide) can continue to do so.
	  The BTT manifests itself as an alternate personality for an
	  NVDIMM namespace, i.e. a namespace can be in raw mode pmemX,
	  or 'sectored' mode.

	  Select Y if unsure

config ND_PFN
	tristate

config NVDIMM_PFN
	bool "PFN: Map persistent (device) memory"
	default LIBNVDIMM
	depends on ZONE_DEVICE
	select ND_CLAIM
	help
	  Map persistent memory, i.e. advertise it to the memory
	  management sub-system.  By default persistent memory does
	  not support direct I/O, RDMA, or any other usage that

Annotation

Implementation Notes