|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | config DAX_DRIVER | 
|  | select DAX | 
|  | bool | 
|  |  | 
|  | menuconfig DAX | 
|  | tristate "DAX: direct access to differentiated memory" | 
|  | select SRCU | 
|  | 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 && X86) | 
|  | default DEV_DAX | 
|  | 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_HMEM_DEVICES | 
|  | depends on DEV_DAX_HMEM && DAX=y | 
|  | def_bool y | 
|  |  | 
|  | config DEV_DAX_KMEM | 
|  | tristate "KMEM DAX: volatile-use of persistent memory" | 
|  | 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. | 
|  |  | 
|  | config DEV_DAX_PMEM_COMPAT | 
|  | tristate "PMEM DAX: support the deprecated /sys/class/dax interface" | 
|  | depends on m && DEV_DAX_PMEM=m | 
|  | default DEV_DAX_PMEM | 
|  | help | 
|  | Older versions of the libdaxctl library expect to find all | 
|  | device-dax instances under /sys/class/dax. If libdaxctl in | 
|  | your distribution is older than v58 say M, otherwise say N. | 
|  |  | 
|  | endif |