^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) config DAX_DRIVER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) select DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) menuconfig DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) tristate "DAX: direct access to differentiated memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) select SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) default m if NVDIMM_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) if DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) config DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) tristate "Device DAX: direct access mapping device"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) depends on TRANSPARENT_HUGEPAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) Support raw access to differentiated (persistence, bandwidth,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) latency...) memory via an mmap(2) capable character
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) device. Platform firmware or a device driver may identify a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) platform memory resource that is differentiated from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) baseline memory pool. Mappings of a /dev/daxX.Y device impose
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) restrictions that make the mapping behavior deterministic.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) config DEV_DAX_PMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) tristate "PMEM DAX: direct access to persistent memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) depends on LIBNVDIMM && NVDIMM_DAX && DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) default DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Support raw access to persistent memory. Note that this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) driver consumes memory ranges allocated and exported by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) libnvdimm sub-system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Say M if unsure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) config DEV_DAX_HMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) tristate "HMEM DAX: direct access to 'specific purpose' memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) depends on EFI_SOFT_RESERVE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) select NUMA_KEEP_MEMINFO if (NUMA && X86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) default DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) EFI 2.8 platforms, and others, may advertise 'specific purpose'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) memory. For example, a high bandwidth memory pool. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) indication from platform firmware is meant to reserve the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) memory from typical usage by default. This driver creates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) device-dax instances for these memory ranges, and that also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) enables the possibility to assign them to the DEV_DAX_KMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) driver to override the reservation and add them to kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) "System RAM" pool.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) Say M if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) config DEV_DAX_HMEM_DEVICES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) depends on DEV_DAX_HMEM && DAX=y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) def_bool y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) config DEV_DAX_KMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) tristate "KMEM DAX: volatile-use of persistent memory"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) default DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) depends on DEV_DAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) depends on MEMORY_HOTPLUG # for add_memory() and friends
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) Support access to persistent, or other performance
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) differentiated memory as if it were System RAM. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) easier use of persistent memory by unmodified applications, or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) adds core kernel memory services to heterogeneous memory types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) (HMEM) marked "reserved" by platform firmware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) To use this feature, a DAX device must be unbound from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) device_dax driver and bound to this kmem driver on each boot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) Say N if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) config DEV_DAX_PMEM_COMPAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) tristate "PMEM DAX: support the deprecated /sys/class/dax interface"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) depends on m && DEV_DAX_PMEM=m
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) default DEV_DAX_PMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) Older versions of the libdaxctl library expect to find all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) device-dax instances under /sys/class/dax. If libdaxctl in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) your distribution is older than v58 say M, otherwise say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) endif