| menuconfig LIBNVDIMM | 
 | 	tristate "NVDIMM (Non-Volatile Memory Device) Support" | 
 | 	depends on PHYS_ADDR_T_64BIT | 
 | 	depends on HAS_IOMEM | 
 | 	depends on BLK_DEV | 
 | 	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) and BLK (sliding mmio window(s)) | 
 | 	  namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a | 
 | 	  memory resource that may span multiple DIMMs and support DAX | 
 | 	  (see CONFIG_DAX).  A BLK namespace refers to an NVDIMM control | 
 | 	  region which exposes an mmio register set for windowed access | 
 | 	  mode to non-volatile memory. | 
 |  | 
 | if LIBNVDIMM | 
 |  | 
 | config BLK_DEV_PMEM | 
 | 	tristate "PMEM: Persistent memory block device support" | 
 | 	default LIBNVDIMM | 
 | 	select DAX_DRIVER | 
 | 	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_NFIT_ACPI), 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/nvdimm/nvdimm.txt for more details. | 
 |  | 
 | 	  Say Y if you want to use an NVDIMM | 
 |  | 
 | config ND_BLK | 
 | 	tristate "BLK: Block data window (aperture) device support" | 
 | 	default LIBNVDIMM | 
 | 	select ND_BTT if BTT | 
 | 	help | 
 | 	  Support NVDIMMs, or other devices, that implement a BLK-mode | 
 | 	  access capability.  BLK-mode access uses memory-mapped-i/o | 
 | 	  apertures to access persistent media. | 
 |  | 
 | 	  Say Y if your platform firmware emits an ACPI.NFIT table | 
 | 	  (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode | 
 | 	  capabilities. | 
 |  | 
 | 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, | 
 | 	  ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys, | 
 | 	  etc...). | 
 |  | 
 | 	  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 | 
 | 	  requires a 'struct page' to mediate an I/O request.  This | 
 | 	  driver allocates and initializes the infrastructure needed | 
 | 	  to support those use cases. | 
 |  | 
 | 	  Select Y if unsure | 
 |  | 
 | config NVDIMM_DAX | 
 | 	bool "NVDIMM DAX: Raw access to persistent memory" | 
 | 	default LIBNVDIMM | 
 | 	depends on NVDIMM_PFN | 
 | 	help | 
 | 	  Support raw device dax access to a persistent memory | 
 | 	  namespace.  For environments that want to hard partition | 
 | 	  persistent memory, this capability provides a mechanism to | 
 | 	  sub-divide a namespace into character devices that can only be | 
 | 	  accessed via DAX (mmap(2)). | 
 |  | 
 | 	  Select Y if unsure | 
 |  | 
 | config OF_PMEM | 
 | 	tristate "Device-tree support for persistent memory regions" | 
 | 	depends on OF | 
 | 	default LIBNVDIMM | 
 | 	help | 
 | 	  Allows regions of persistent memory to be described in the | 
 | 	  device-tree. | 
 |  | 
 | 	  Select Y if unsure. | 
 |  | 
 | endif |