1menuconfig LIBNVDIMM 2 tristate "NVDIMM (Non-Volatile Memory Device) Support" 3 depends on PHYS_ADDR_T_64BIT 4 depends on HAS_IOMEM 5 depends on BLK_DEV 6 help 7 Generic support for non-volatile memory devices including 8 ACPI-6-NFIT defined resources. On platforms that define an 9 NFIT, or otherwise can discover NVDIMM resources, a libnvdimm 10 bus is registered to advertise PMEM (persistent memory) 11 namespaces (/dev/pmemX) and BLK (sliding mmio window(s)) 12 namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a 13 memory resource that may span multiple DIMMs and support DAX 14 (see CONFIG_DAX). A BLK namespace refers to an NVDIMM control 15 region which exposes an mmio register set for windowed access 16 mode to non-volatile memory. 17 18if LIBNVDIMM 19 20config BLK_DEV_PMEM 21 tristate "PMEM: Persistent memory block device support" 22 default LIBNVDIMM 23 select ND_BTT if BTT 24 select ND_PFN if NVDIMM_PFN 25 help 26 Memory ranges for PMEM are described by either an NFIT 27 (NVDIMM Firmware Interface Table, see CONFIG_NFIT_ACPI), a 28 non-standard OEM-specific E820 memory type (type-12, see 29 CONFIG_X86_PMEM_LEGACY), or it is manually specified by the 30 'memmap=nn[KMG]!ss[KMG]' kernel command line (see 31 Documentation/admin-guide/kernel-parameters.rst). This driver converts 32 these persistent memory ranges into block devices that are 33 capable of DAX (direct-access) file system mappings. See 34 Documentation/nvdimm/nvdimm.txt for more details. 35 36 Say Y if you want to use an NVDIMM 37 38config ND_BLK 39 tristate "BLK: Block data window (aperture) device support" 40 default LIBNVDIMM 41 select ND_BTT if BTT 42 help 43 Support NVDIMMs, or other devices, that implement a BLK-mode 44 access capability. BLK-mode access uses memory-mapped-i/o 45 apertures to access persistent media. 46 47 Say Y if your platform firmware emits an ACPI.NFIT table 48 (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode 49 capabilities. 50 51config ND_CLAIM 52 bool 53 54config ND_BTT 55 tristate 56 57config BTT 58 bool "BTT: Block Translation Table (atomic sector updates)" 59 default y if LIBNVDIMM 60 select ND_CLAIM 61 help 62 The Block Translation Table (BTT) provides atomic sector 63 update semantics for persistent memory devices, so that 64 applications that rely on sector writes not being torn (a 65 guarantee that typical disks provide) can continue to do so. 66 The BTT manifests itself as an alternate personality for an 67 NVDIMM namespace, i.e. a namespace can be in raw mode (pmemX, 68 ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys, 69 etc...). 70 71 Select Y if unsure 72 73config ND_PFN 74 tristate 75 76config NVDIMM_PFN 77 bool "PFN: Map persistent (device) memory" 78 default LIBNVDIMM 79 depends on ZONE_DEVICE 80 select ND_CLAIM 81 help 82 Map persistent memory, i.e. advertise it to the memory 83 management sub-system. By default persistent memory does 84 not support direct I/O, RDMA, or any other usage that 85 requires a 'struct page' to mediate an I/O request. This 86 driver allocates and initializes the infrastructure needed 87 to support those use cases. 88 89 Select Y if unsure 90 91config NVDIMM_DAX 92 bool "NVDIMM DAX: Raw access to persistent memory" 93 default LIBNVDIMM 94 depends on NVDIMM_PFN 95 help 96 Support raw device dax access to a persistent memory 97 namespace. For environments that want to hard partition 98 peristent memory, this capability provides a mechanism to 99 sub-divide a namespace into character devices that can only be 100 accessed via DAX (mmap(2)). 101 102 Select Y if unsure 103 104endif 105