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
	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
	  peristent 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

endif
