# 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 && 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_CXL
	tristate "CXL DAX: direct access to CXL RAM regions"
	depends on CXL_BUS && CXL_REGION && DEV_DAX
	default CXL_REGION && DEV_DAX
	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_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
