# SPDX-License-Identifier: GPL-2.0-only
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.

endif
