mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
c1d6e828a3
Setup a dax_device to have the same lifetime as the pmem block device and add a ->direct_access() method that is equivalent to pmem_direct_access(). Once fs/dax.c has been converted to use dax_operations the old pmem_direct_access() will be removed. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
106 lines
3.4 KiB
Plaintext
106 lines
3.4 KiB
Plaintext
menuconfig LIBNVDIMM
|
|
tristate "NVDIMM (Non-Volatile Memory Device) Support"
|
|
depends on PHYS_ADDR_T_64BIT
|
|
depends on HAS_IOMEM
|
|
depends on BLK_DEV
|
|
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
|
|
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/nvdimm/nvdimm.txt 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
|
|
peristent 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
|
|
|
|
endif
|