You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
libnvdimm, pfn: 'struct page' provider infrastructure
Implement the base infrastructure for libnvdimm PFN devices. Similar to BTT devices they take a namespace as a backing device and layer functionality on top. In this case the functionality is reserving space for an array of 'struct page' entries to be handed out through pfn_to_page(). For now this is just the basic libnvdimm-device-model for configuring the base PFN device. As the namespace claiming mechanism for PFN devices is mostly identical to BTT devices drivers/nvdimm/claim.c is created to house the common bits. Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -21,6 +21,7 @@ config BLK_DEV_PMEM
|
||||
default LIBNVDIMM
|
||||
depends on HAS_IOMEM
|
||||
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
|
||||
@@ -47,12 +48,16 @@ config ND_BLK
|
||||
(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
|
||||
@@ -65,4 +70,21 @@ config BTT
|
||||
|
||||
Select Y if unsure
|
||||
|
||||
config ND_PFN
|
||||
tristate
|
||||
|
||||
config NVDIMM_PFN
|
||||
bool "PFN: Map persistent (device) memory"
|
||||
default LIBNVDIMM
|
||||
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
|
||||
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user