mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 02:04:19 +08:00
33dd70752c
In preparation for handling platform differentiated memory types beyond persistent memory, uplevel the "region" identifier to a global number space. This enables a device-dax instance to be registered to any memory type with guaranteed unique names. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
135 lines
4.2 KiB
Plaintext
135 lines
4.2 KiB
Plaintext
# 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
|