# 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
	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
