# 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_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/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
	  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.

config NVDIMM_KEYS
	def_bool y
	depends on ENCRYPTED_KEYS
	depends on (LIBNVDIMM=ENCRYPTED_KEYS) || LIBNVDIMM=m

config NVDIMM_TEST_BUILD
	tristate "Build the unit test core"
	depends on m
	depends on COMPILE_TEST && X86_64
	default m if COMPILE_TEST
	help
	  Build the core of the unit test infrastructure. The result of
	  this build is non-functional for unit test execution, but it
	  otherwise helps catch build errors induced by changes to the
	  core devm_memremap_pages() implementation and other
	  infrastructure.

config NVDIMM_SECURITY_TEST
	bool "Enable NVDIMM security unit tests"
	depends on NVDIMM_KEYS
	help
	  The NVDIMM and CXL subsystems support unit testing of their device
	  security state machines. The NVDIMM_SECURITY_TEST option disables CPU
	  cache maintenance operations around events like secure erase and
	  overwrite.  Also, when enabled, the NVDIMM subsystem core helps the unit
	  test implement a mock state machine.

	  Select N if unsure.

endif
