134 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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) 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.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| endif
 |