118da2c9eSDan Williamsmenuconfig LIBNVDIMM 2b94d5230SDan Williams tristate "NVDIMM (Non-Volatile Memory Device) Support" 3b94d5230SDan Williams depends on PHYS_ADDR_T_64BIT 4*29b9aa0aSDan Williams depends on HAS_IOMEM 5b94d5230SDan Williams depends on BLK_DEV 6b94d5230SDan Williams help 7b94d5230SDan Williams Generic support for non-volatile memory devices including 8b94d5230SDan Williams ACPI-6-NFIT defined resources. On platforms that define an 9b94d5230SDan Williams NFIT, or otherwise can discover NVDIMM resources, a libnvdimm 10b94d5230SDan Williams bus is registered to advertise PMEM (persistent memory) 11b94d5230SDan Williams namespaces (/dev/pmemX) and BLK (sliding mmio window(s)) 125212e11fSVishal Verma namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a 135212e11fSVishal Verma memory resource that may span multiple DIMMs and support DAX 145212e11fSVishal Verma (see CONFIG_DAX). A BLK namespace refers to an NVDIMM control 155212e11fSVishal Verma region which exposes an mmio register set for windowed access 165212e11fSVishal Verma mode to non-volatile memory. 1718da2c9eSDan Williams 1818da2c9eSDan Williamsif LIBNVDIMM 1918da2c9eSDan Williams 2018da2c9eSDan Williamsconfig BLK_DEV_PMEM 2118da2c9eSDan Williams tristate "PMEM: Persistent memory block device support" 2218da2c9eSDan Williams default LIBNVDIMM 235212e11fSVishal Verma select ND_BTT if BTT 24e1455744SDan Williams select ND_PFN if NVDIMM_PFN 2518da2c9eSDan Williams help 2618da2c9eSDan Williams Memory ranges for PMEM are described by either an NFIT 2718da2c9eSDan Williams (NVDIMM Firmware Interface Table, see CONFIG_NFIT_ACPI), a 2818da2c9eSDan Williams non-standard OEM-specific E820 memory type (type-12, see 2918da2c9eSDan Williams CONFIG_X86_PMEM_LEGACY), or it is manually specified by the 3018da2c9eSDan Williams 'memmap=nn[KMG]!ss[KMG]' kernel command line (see 3118da2c9eSDan Williams Documentation/kernel-parameters.txt). This driver converts 3218da2c9eSDan Williams these persistent memory ranges into block devices that are 3318da2c9eSDan Williams capable of DAX (direct-access) file system mappings. See 3418da2c9eSDan Williams Documentation/nvdimm/nvdimm.txt for more details. 3518da2c9eSDan Williams 3618da2c9eSDan Williams Say Y if you want to use an NVDIMM 3718da2c9eSDan Williams 38047fc8a1SRoss Zwislerconfig ND_BLK 39047fc8a1SRoss Zwisler tristate "BLK: Block data window (aperture) device support" 40047fc8a1SRoss Zwisler default LIBNVDIMM 41047fc8a1SRoss Zwisler select ND_BTT if BTT 42047fc8a1SRoss Zwisler help 43047fc8a1SRoss Zwisler Support NVDIMMs, or other devices, that implement a BLK-mode 44047fc8a1SRoss Zwisler access capability. BLK-mode access uses memory-mapped-i/o 45047fc8a1SRoss Zwisler apertures to access persistent media. 46047fc8a1SRoss Zwisler 47047fc8a1SRoss Zwisler Say Y if your platform firmware emits an ACPI.NFIT table 48047fc8a1SRoss Zwisler (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode 49047fc8a1SRoss Zwisler capabilities. 50047fc8a1SRoss Zwisler 51e1455744SDan Williamsconfig ND_CLAIM 52e1455744SDan Williams bool 53e1455744SDan Williams 545212e11fSVishal Vermaconfig ND_BTT 555212e11fSVishal Verma tristate 565212e11fSVishal Verma 578c2f7e86SDan Williamsconfig BTT 585212e11fSVishal Verma bool "BTT: Block Translation Table (atomic sector updates)" 595212e11fSVishal Verma default y if LIBNVDIMM 60e1455744SDan Williams select ND_CLAIM 615212e11fSVishal Verma help 625212e11fSVishal Verma The Block Translation Table (BTT) provides atomic sector 635212e11fSVishal Verma update semantics for persistent memory devices, so that 645212e11fSVishal Verma applications that rely on sector writes not being torn (a 655212e11fSVishal Verma guarantee that typical disks provide) can continue to do so. 665212e11fSVishal Verma The BTT manifests itself as an alternate personality for an 675212e11fSVishal Verma NVDIMM namespace, i.e. a namespace can be in raw mode (pmemX, 685212e11fSVishal Verma ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys, 695212e11fSVishal Verma etc...). 705212e11fSVishal Verma 715212e11fSVishal Verma Select Y if unsure 728c2f7e86SDan Williams 73e1455744SDan Williamsconfig ND_PFN 74e1455744SDan Williams tristate 75e1455744SDan Williams 76e1455744SDan Williamsconfig NVDIMM_PFN 77e1455744SDan Williams bool "PFN: Map persistent (device) memory" 78e1455744SDan Williams default LIBNVDIMM 7932ab0a3fSDan Williams depends on ZONE_DEVICE 80e1455744SDan Williams select ND_CLAIM 81e1455744SDan Williams help 82e1455744SDan Williams Map persistent memory, i.e. advertise it to the memory 83e1455744SDan Williams management sub-system. By default persistent memory does 84e1455744SDan Williams not support direct I/O, RDMA, or any other usage that 85e1455744SDan Williams requires a 'struct page' to mediate an I/O request. This 86e1455744SDan Williams driver allocates and initializes the infrastructure needed 87e1455744SDan Williams to support those use cases. 88e1455744SDan Williams 89e1455744SDan Williams Select Y if unsure 90e1455744SDan Williams 91cd03412aSDan Williamsconfig NVDIMM_DAX 92cd03412aSDan Williams bool "NVDIMM DAX: Raw access to persistent memory" 93cd03412aSDan Williams default LIBNVDIMM 94cd03412aSDan Williams depends on NVDIMM_PFN 95cd03412aSDan Williams help 96cd03412aSDan Williams Support raw device dax access to a persistent memory 97cd03412aSDan Williams namespace. For environments that want to hard partition 98cd03412aSDan Williams peristent memory, this capability provides a mechanism to 99cd03412aSDan Williams sub-divide a namespace into character devices that can only be 100cd03412aSDan Williams accessed via DAX (mmap(2)). 101cd03412aSDan Williams 102cd03412aSDan Williams Select Y if unsure 103cd03412aSDan Williams 10418da2c9eSDan Williamsendif 105