menuconfig LIBNVDIMM
	tristate "NVDIMM (Non-Volatile Memory Device) Support"
	depends on PHYS_ADDR_T_64BIT
	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
	depends on HAS_IOMEM
	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/kernel-parameters.txt).  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

endif
