forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.2 KiB
134 lines
4.2 KiB
# 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) 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/driver-api/nvdimm/nvdimm.rst 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
|
|
|