# 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
	depends on CXL_ACPI || !CXL_ACPI
	depends on CXL_PCI || !CXL_PCI
	depends on CXL_BUS || !CXL_BUS
	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
	depends on DEV_DAX_HMEM || !DEV_DAX_HMEM
	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_FSDEV
	tristate
	depends on DEV_DAX && FS_DAX
	default DEV_DAX

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
