118da2c9eSDan Williamsmenuconfig LIBNVDIMM 2b94d5230SDan Williams tristate "NVDIMM (Non-Volatile Memory Device) Support" 3b94d5230SDan Williams depends on PHYS_ADDR_T_64BIT 4b94d5230SDan Williams depends on BLK_DEV 5b94d5230SDan Williams help 6b94d5230SDan Williams Generic support for non-volatile memory devices including 7b94d5230SDan Williams ACPI-6-NFIT defined resources. On platforms that define an 8b94d5230SDan Williams NFIT, or otherwise can discover NVDIMM resources, a libnvdimm 9b94d5230SDan Williams bus is registered to advertise PMEM (persistent memory) 10b94d5230SDan Williams namespaces (/dev/pmemX) and BLK (sliding mmio window(s)) 115212e11fSVishal Verma namespaces (/dev/ndblkX.Y). A PMEM namespace refers to a 125212e11fSVishal Verma memory resource that may span multiple DIMMs and support DAX 135212e11fSVishal Verma (see CONFIG_DAX). A BLK namespace refers to an NVDIMM control 145212e11fSVishal Verma region which exposes an mmio register set for windowed access 155212e11fSVishal Verma mode to non-volatile memory. 1618da2c9eSDan Williams 1718da2c9eSDan Williamsif LIBNVDIMM 1818da2c9eSDan Williams 1918da2c9eSDan Williamsconfig BLK_DEV_PMEM 2018da2c9eSDan Williams tristate "PMEM: Persistent memory block device support" 2118da2c9eSDan Williams default LIBNVDIMM 2218da2c9eSDan Williams depends on HAS_IOMEM 235212e11fSVishal Verma select ND_BTT if BTT 2418da2c9eSDan Williams help 2518da2c9eSDan Williams Memory ranges for PMEM are described by either an NFIT 2618da2c9eSDan Williams (NVDIMM Firmware Interface Table, see CONFIG_NFIT_ACPI), a 2718da2c9eSDan Williams non-standard OEM-specific E820 memory type (type-12, see 2818da2c9eSDan Williams CONFIG_X86_PMEM_LEGACY), or it is manually specified by the 2918da2c9eSDan Williams 'memmap=nn[KMG]!ss[KMG]' kernel command line (see 3018da2c9eSDan Williams Documentation/kernel-parameters.txt). This driver converts 3118da2c9eSDan Williams these persistent memory ranges into block devices that are 3218da2c9eSDan Williams capable of DAX (direct-access) file system mappings. See 3318da2c9eSDan Williams Documentation/nvdimm/nvdimm.txt for more details. 3418da2c9eSDan Williams 3518da2c9eSDan Williams Say Y if you want to use an NVDIMM 3618da2c9eSDan Williams 37*047fc8a1SRoss Zwislerconfig ND_BLK 38*047fc8a1SRoss Zwisler tristate "BLK: Block data window (aperture) device support" 39*047fc8a1SRoss Zwisler default LIBNVDIMM 40*047fc8a1SRoss Zwisler select ND_BTT if BTT 41*047fc8a1SRoss Zwisler help 42*047fc8a1SRoss Zwisler Support NVDIMMs, or other devices, that implement a BLK-mode 43*047fc8a1SRoss Zwisler access capability. BLK-mode access uses memory-mapped-i/o 44*047fc8a1SRoss Zwisler apertures to access persistent media. 45*047fc8a1SRoss Zwisler 46*047fc8a1SRoss Zwisler Say Y if your platform firmware emits an ACPI.NFIT table 47*047fc8a1SRoss Zwisler (CONFIG_ACPI_NFIT), or otherwise exposes BLK-mode 48*047fc8a1SRoss Zwisler capabilities. 49*047fc8a1SRoss Zwisler 505212e11fSVishal Vermaconfig ND_BTT 515212e11fSVishal Verma tristate 525212e11fSVishal Verma 538c2f7e86SDan Williamsconfig BTT 545212e11fSVishal Verma bool "BTT: Block Translation Table (atomic sector updates)" 555212e11fSVishal Verma default y if LIBNVDIMM 565212e11fSVishal Verma help 575212e11fSVishal Verma The Block Translation Table (BTT) provides atomic sector 585212e11fSVishal Verma update semantics for persistent memory devices, so that 595212e11fSVishal Verma applications that rely on sector writes not being torn (a 605212e11fSVishal Verma guarantee that typical disks provide) can continue to do so. 615212e11fSVishal Verma The BTT manifests itself as an alternate personality for an 625212e11fSVishal Verma NVDIMM namespace, i.e. a namespace can be in raw mode (pmemX, 635212e11fSVishal Verma ndblkX.Y, etc...), or 'sectored' mode, (pmemXs, ndblkX.Ys, 645212e11fSVishal Verma etc...). 655212e11fSVishal Verma 665212e11fSVishal Verma Select Y if unsure 678c2f7e86SDan Williams 6818da2c9eSDan Williamsendif 69