# SPDX-License-Identifier: GPL-2.0-only
config DAX_DRIVER
	select DAX
	bool

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_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 memory as if it were RAM.  This
	  allows easier use of persistent memory by unmodified
	  applications.

	  To use this feature, a DAX device must be unbound from the
	  device_dax driver (PMEM DAX) and bound to this kmem driver
	  on each boot.

	  Say N if unsure.

config DEV_DAX_PMEM_COMPAT
	tristate "PMEM DAX: support the deprecated /sys/class/dax interface"
	depends on m && DEV_DAX_PMEM=m
	default DEV_DAX_PMEM
	help
	  Older versions of the libdaxctl library expect to find all
	  device-dax instances under /sys/class/dax. If libdaxctl in
	  your distribution is older than v58 say M, otherwise say N.

endif
