[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260112163514.2551809-5-gourry@gourry.net>
Date: Mon, 12 Jan 2026 11:35:12 -0500
From: Gregory Price <gourry@...rry.net>
To: linux-cxl@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
kernel-team@...a.com,
dave@...olabs.net,
jonathan.cameron@...wei.com,
dave.jiang@...el.com,
alison.schofield@...el.com,
vishal.l.verma@...el.com,
ira.weiny@...el.com,
dan.j.williams@...el.com
Subject: [PATCH 4/6] cxl: add CONFIG_CXL_REGION_CTRL_AUTO_* build config options
To give users the option to have the auto-behavior of memory to default
to SYSRAM, provide a switch. The default is still recommended to be DAX
in case of multiple devices being added to the system, but this provides
simpler systems a path to use the sysram controller for systems already
configured with auto-regions.
Signed-off-by: Gregory Price <gourry@...rry.net>
---
drivers/cxl/Kconfig | 32 ++++++++++++++++++++++++++++++
drivers/cxl/core/memctrl/memctrl.c | 2 ++
drivers/cxl/cxl.h | 2 +-
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/drivers/cxl/Kconfig b/drivers/cxl/Kconfig
index 48b7314afdb8..5aed1524f8f1 100644
--- a/drivers/cxl/Kconfig
+++ b/drivers/cxl/Kconfig
@@ -211,6 +211,38 @@ config CXL_REGION
If unsure say 'y'
+choice
+ prompt "CXL Region Auto Control Mode"
+ depends on CXL_REGION
+ default CXL_REGION_CTRL_AUTO_DAX
+ help
+ Select the default controller for CXL regions when ctrl mode is
+ set to 'auto'. This determines how CXL memory regions are exposed
+ to the system when no explicit control mode is specified.
+
+config CXL_REGION_CTRL_AUTO_DAX
+ bool "DAX"
+ help
+ When a CXL region's control mode is 'auto', create a DAX region
+ controller. This allows fine-grained control over the memory region
+ through the DAX subsystem, and the region can later be converted to
+ System RAM via daxctl.
+
+ This is the default and recommended option for most use cases.
+
+config CXL_REGION_CTRL_AUTO_SYSRAM
+ bool "System RAM"
+ help
+ When a CXL region's control mode is 'auto', hotplug the region
+ directly as System RAM. This makes the CXL memory immediately
+ available to the kernel's memory allocator without requiring
+ additional userspace configuration.
+
+ Select this if you want CXL memory to be automatically available
+ as regular system memory.
+
+endchoice
+
config CXL_REGION_INVALIDATION_TEST
bool "CXL: Region Cache Management Bypass (TEST)"
depends on CXL_REGION
diff --git a/drivers/cxl/core/memctrl/memctrl.c b/drivers/cxl/core/memctrl/memctrl.c
index 1b661465bdeb..cb6c37f4c0ee 100644
--- a/drivers/cxl/core/memctrl/memctrl.c
+++ b/drivers/cxl/core/memctrl/memctrl.c
@@ -31,6 +31,8 @@ int cxl_enable_memctrl(struct cxl_region *cxlr)
p->res->start, p->res->end, cxlr,
is_system_ram) > 0)
return 0;
+ if (IS_ENABLED(CONFIG_CXL_REGION_CTRL_AUTO_SYSRAM))
+ return devm_cxl_add_sysram_region(cxlr);
return devm_cxl_add_dax_region(cxlr);
case CXL_MEMCTRL_DAX:
return devm_cxl_add_dax_region(cxlr);
diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
index c69d27a2e97d..1dae6fe4f70c 100644
--- a/drivers/cxl/cxl.h
+++ b/drivers/cxl/cxl.h
@@ -506,7 +506,7 @@ enum cxl_partition_mode {
/*
* Memory Controller modes:
* None - No controller selected
- * Auto - either BIOS-configured as SysRAM, or default to DAX
+ * Auto - Auto-select based on BIOS, boot, and build configs.
* DAX - creates a dax_region controller for the cxl_region
* SYSRAM - hotplugs the region directly as System RAM
* PMEM - persistent memory controller (nvdimm)
--
2.52.0
Powered by blists - more mailing lists