| # SPDX-License-Identifier: GPL-2.0-only | |
| menuconfig DAX | |
| tristate "DAX: direct access to differentiated memory" | |
| default m if NVDIMM_DAX | |
| if DAX | |
| config DEV_DAX | |
| tristate "Device DAX: direct access mapping device" | |
| depends on TRANSPARENT_HUGEPAGE | |
| help | |
| Support raw access to differentiated (persistence, bandwidth, | |
| latency...) memory via an mmap(2) capable character | |
| device. Platform firmware or a device driver may identify a | |
| platform memory resource that is differentiated from the | |
| baseline memory pool. Mappings of a /dev/daxX.Y device impose | |
| restrictions that make the mapping behavior deterministic. | |
| config DEV_DAX_PMEM | |
| tristate "PMEM DAX: direct access to persistent memory" | |
| depends on LIBNVDIMM && NVDIMM_DAX && DEV_DAX | |
| default DEV_DAX | |
| help | |
| Support raw access to persistent memory. Note that this | |
| driver consumes memory ranges allocated and exported by the | |
| libnvdimm sub-system. | |
| Say M if unsure | |
| config DEV_DAX_HMEM | |
| tristate "HMEM DAX: direct access to 'specific purpose' memory" | |
| depends on EFI_SOFT_RESERVE | |
| select NUMA_KEEP_MEMINFO if NUMA_MEMBLKS | |
| default DEV_DAX | |
| depends on CXL_ACPI || !CXL_ACPI | |
| depends on CXL_PCI || !CXL_PCI | |
| depends on CXL_BUS || !CXL_BUS | |
| help | |
| EFI 2.8 platforms, and others, may advertise 'specific purpose' | |
| memory. For example, a high bandwidth memory pool. The | |
| indication from platform firmware is meant to reserve the | |
| memory from typical usage by default. This driver creates | |
| device-dax instances for these memory ranges, and that also | |
| enables the possibility to assign them to the DEV_DAX_KMEM | |
| driver to override the reservation and add them to kernel | |
| "System RAM" pool. | |
| Say M if unsure. | |
| config DEV_DAX_CXL | |
| tristate "CXL DAX: direct access to CXL RAM regions" | |
| depends on CXL_BUS && CXL_REGION && DEV_DAX | |
| default CXL_REGION && DEV_DAX | |
| depends on DEV_DAX_HMEM || !DEV_DAX_HMEM | |
| help | |
| CXL RAM regions are either mapped by platform-firmware | |
| and published in the initial system-memory map as "System RAM", mapped | |
| by platform-firmware as "Soft Reserved", or dynamically provisioned | |
| after boot by the CXL driver. In the latter two cases a device-dax | |
| instance is created to access that unmapped-by-default address range. | |
| Per usual it can remain as dedicated access via a device interface, or | |
| converted to "System RAM" via the dax_kmem facility. | |
| config DEV_DAX_HMEM_DEVICES | |
| depends on DEV_DAX_HMEM && DAX | |
| def_bool y | |
| config DEV_DAX_FSDEV | |
| tristate | |
| depends on DEV_DAX && FS_DAX | |
| default DEV_DAX | |
| config DEV_DAX_KMEM | |
| tristate "KMEM DAX: map dax-devices as System-RAM" | |
| default DEV_DAX | |
| depends on DEV_DAX | |
| depends on MEMORY_HOTPLUG # for add_memory() and friends | |
| help | |
| Support access to persistent, or other performance | |
| differentiated memory as if it were System RAM. This allows | |
| easier use of persistent memory by unmodified applications, or | |
| adds core kernel memory services to heterogeneous memory types | |
| (HMEM) marked "reserved" by platform firmware. | |
| To use this feature, a DAX device must be unbound from the | |
| device_dax driver and bound to this kmem driver on each boot. | |
| Say N if unsure. | |
| endif |