* [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status
@ 2026-04-01 12:49 Li Ming
2026-04-01 16:50 ` Alison Schofield
2026-04-01 17:20 ` Dave Jiang
0 siblings, 2 replies; 3+ messages in thread
From: Li Ming @ 2026-04-01 12:49 UTC (permalink / raw)
To: dave, jonathan.cameron, dave.jiang, alison.schofield,
vishal.l.verma, ira.weiny, dan.j.williams
Cc: linux-cxl, linux-kernel, ming.li, Alejandro Lucero
If a region is created on a root decoder with Fixed Device Confiuration
attribute, the region will be locked, meaning region destroy
operations are not permitted. CXL region driver returns -EPERM for
region destroy operations.
Although the locked status of the corresponding root decoder implies the
region is also locked, exposing the region lock status directly to
userspace improves usability for users who may not be aware of this
relationship.
Signed-off-by: Li Ming <ming.li@zohomail.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Alejandro Lucero <alucerop@amd.com>
---
v2:
* Add more info to the interface description. (Alison)
---
Documentation/ABI/testing/sysfs-bus-cxl | 13 +++++++++++++
drivers/cxl/core/region.c | 17 +++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
index c80a1b5a03db..16a9b3d2e2c0 100644
--- a/Documentation/ABI/testing/sysfs-bus-cxl
+++ b/Documentation/ABI/testing/sysfs-bus-cxl
@@ -508,6 +508,19 @@ Description:
(RO) The size of extended linear cache, if there is an extended
linear cache. Otherwise the attribute will not be visible.
+
+What: /sys/bus/cxl/devices/regionZ/locked
+Date: Mar, 2026
+KernelVersion: v7.1
+Contact: linux-cxl@vger.kernel.org
+Description:
+ (RO) The CXL driver has the capability to lock a region based on
+ a BIOS or platform dependent configuration. Regions created as
+ locked are never permitted to be destroyed. Resets to participating
+ decoders will not result in a region destroy and will not free the
+ decoder resources.
+
+
What: /sys/bus/cxl/devices/regionZ/mode
Date: January, 2023
KernelVersion: v6.3
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 42874948b589..95d81816008e 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -767,6 +767,22 @@ static ssize_t extended_linear_cache_size_show(struct device *dev,
}
static DEVICE_ATTR_RO(extended_linear_cache_size);
+static ssize_t locked_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct cxl_region *cxlr = to_cxl_region(dev);
+ int rc;
+
+ ACQUIRE(rwsem_read_intr, rwsem)(&cxl_rwsem.region);
+ if ((rc = ACQUIRE_ERR(rwsem_read_intr, &rwsem)))
+ return rc;
+
+ rc = test_bit(CXL_REGION_F_LOCK, &cxlr->flags);
+ return sysfs_emit(buf, "%d\n", rc);
+}
+static DEVICE_ATTR_RO(locked);
+
static struct attribute *cxl_region_attrs[] = {
&dev_attr_uuid.attr,
&dev_attr_commit.attr,
@@ -776,6 +792,7 @@ static struct attribute *cxl_region_attrs[] = {
&dev_attr_size.attr,
&dev_attr_mode.attr,
&dev_attr_extended_linear_cache_size.attr,
+ &dev_attr_locked.attr,
NULL,
};
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status
2026-04-01 12:49 [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status Li Ming
@ 2026-04-01 16:50 ` Alison Schofield
2026-04-01 17:20 ` Dave Jiang
1 sibling, 0 replies; 3+ messages in thread
From: Alison Schofield @ 2026-04-01 16:50 UTC (permalink / raw)
To: Li Ming
Cc: dave, jonathan.cameron, dave.jiang, vishal.l.verma, ira.weiny,
dan.j.williams, linux-cxl, linux-kernel, Alejandro Lucero
On Wed, Apr 01, 2026 at 08:49:51PM +0800, Li Ming wrote:
> If a region is created on a root decoder with Fixed Device Confiuration
> attribute, the region will be locked, meaning region destroy
> operations are not permitted. CXL region driver returns -EPERM for
> region destroy operations.
The above intro is too narrow for why region may be locked. See v1
comments. Let's keep it similar to the sysfs 'Description:' field,
like this:
The CXL driver has the capability to lock a region based on a BIOS or
platform dependent configuration. Region destroy operations are not
permitted on locked regions and the CXL region driver returns -EPERM
for region destroy operations.
Otherwise, LGTM
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
>
> Although the locked status of the corresponding root decoder implies the
> region is also locked, exposing the region lock status directly to
> userspace improves usability for users who may not be aware of this
> relationship.
>
> Signed-off-by: Li Ming <ming.li@zohomail.com>
> Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> Reviewed-by: Alejandro Lucero <alucerop@amd.com>
> ---
> v2:
> * Add more info to the interface description. (Alison)
> ---
> Documentation/ABI/testing/sysfs-bus-cxl | 13 +++++++++++++
> drivers/cxl/core/region.c | 17 +++++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
> index c80a1b5a03db..16a9b3d2e2c0 100644
> --- a/Documentation/ABI/testing/sysfs-bus-cxl
> +++ b/Documentation/ABI/testing/sysfs-bus-cxl
> @@ -508,6 +508,19 @@ Description:
> (RO) The size of extended linear cache, if there is an extended
> linear cache. Otherwise the attribute will not be visible.
>
> +
> +What: /sys/bus/cxl/devices/regionZ/locked
> +Date: Mar, 2026
> +KernelVersion: v7.1
> +Contact: linux-cxl@vger.kernel.org
> +Description:
> + (RO) The CXL driver has the capability to lock a region based on
> + a BIOS or platform dependent configuration. Regions created as
> + locked are never permitted to be destroyed. Resets to participating
> + decoders will not result in a region destroy and will not free the
> + decoder resources.
> +
> +
> What: /sys/bus/cxl/devices/regionZ/mode
> Date: January, 2023
> KernelVersion: v6.3
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index 42874948b589..95d81816008e 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -767,6 +767,22 @@ static ssize_t extended_linear_cache_size_show(struct device *dev,
> }
> static DEVICE_ATTR_RO(extended_linear_cache_size);
>
> +static ssize_t locked_show(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + struct cxl_region *cxlr = to_cxl_region(dev);
> + int rc;
> +
> + ACQUIRE(rwsem_read_intr, rwsem)(&cxl_rwsem.region);
> + if ((rc = ACQUIRE_ERR(rwsem_read_intr, &rwsem)))
> + return rc;
> +
> + rc = test_bit(CXL_REGION_F_LOCK, &cxlr->flags);
> + return sysfs_emit(buf, "%d\n", rc);
> +}
> +static DEVICE_ATTR_RO(locked);
> +
> static struct attribute *cxl_region_attrs[] = {
> &dev_attr_uuid.attr,
> &dev_attr_commit.attr,
> @@ -776,6 +792,7 @@ static struct attribute *cxl_region_attrs[] = {
> &dev_attr_size.attr,
> &dev_attr_mode.attr,
> &dev_attr_extended_linear_cache_size.attr,
> + &dev_attr_locked.attr,
> NULL,
> };
>
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status
2026-04-01 12:49 [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status Li Ming
2026-04-01 16:50 ` Alison Schofield
@ 2026-04-01 17:20 ` Dave Jiang
1 sibling, 0 replies; 3+ messages in thread
From: Dave Jiang @ 2026-04-01 17:20 UTC (permalink / raw)
To: Li Ming, dave, jonathan.cameron, alison.schofield, vishal.l.verma,
ira.weiny, dan.j.williams
Cc: linux-cxl, linux-kernel, Alejandro Lucero
On 4/1/26 5:49 AM, Li Ming wrote:
> If a region is created on a root decoder with Fixed Device Confiuration
> attribute, the region will be locked, meaning region destroy
> operations are not permitted. CXL region driver returns -EPERM for
> region destroy operations.
>
> Although the locked status of the corresponding root decoder implies the
> region is also locked, exposing the region lock status directly to
> userspace improves usability for users who may not be aware of this
> relationship.
>
> Signed-off-by: Li Ming <ming.li@zohomail.com>
> Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> Reviewed-by: Alejandro Lucero <alucerop@amd.com>
Applied to cxl/next with commit log ammended per Alison.
d585bc86fb9f
> ---
> v2:
> * Add more info to the interface description. (Alison)
> ---
> Documentation/ABI/testing/sysfs-bus-cxl | 13 +++++++++++++
> drivers/cxl/core/region.c | 17 +++++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-bus-cxl b/Documentation/ABI/testing/sysfs-bus-cxl
> index c80a1b5a03db..16a9b3d2e2c0 100644
> --- a/Documentation/ABI/testing/sysfs-bus-cxl
> +++ b/Documentation/ABI/testing/sysfs-bus-cxl
> @@ -508,6 +508,19 @@ Description:
> (RO) The size of extended linear cache, if there is an extended
> linear cache. Otherwise the attribute will not be visible.
>
> +
> +What: /sys/bus/cxl/devices/regionZ/locked
> +Date: Mar, 2026
> +KernelVersion: v7.1
> +Contact: linux-cxl@vger.kernel.org
> +Description:
> + (RO) The CXL driver has the capability to lock a region based on
> + a BIOS or platform dependent configuration. Regions created as
> + locked are never permitted to be destroyed. Resets to participating
> + decoders will not result in a region destroy and will not free the
> + decoder resources.
> +
> +
> What: /sys/bus/cxl/devices/regionZ/mode
> Date: January, 2023
> KernelVersion: v6.3
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index 42874948b589..95d81816008e 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -767,6 +767,22 @@ static ssize_t extended_linear_cache_size_show(struct device *dev,
> }
> static DEVICE_ATTR_RO(extended_linear_cache_size);
>
> +static ssize_t locked_show(struct device *dev,
> + struct device_attribute *attr,
> + char *buf)
> +{
> + struct cxl_region *cxlr = to_cxl_region(dev);
> + int rc;
> +
> + ACQUIRE(rwsem_read_intr, rwsem)(&cxl_rwsem.region);
> + if ((rc = ACQUIRE_ERR(rwsem_read_intr, &rwsem)))
> + return rc;
> +
> + rc = test_bit(CXL_REGION_F_LOCK, &cxlr->flags);
> + return sysfs_emit(buf, "%d\n", rc);
> +}
> +static DEVICE_ATTR_RO(locked);
> +
> static struct attribute *cxl_region_attrs[] = {
> &dev_attr_uuid.attr,
> &dev_attr_commit.attr,
> @@ -776,6 +792,7 @@ static struct attribute *cxl_region_attrs[] = {
> &dev_attr_size.attr,
> &dev_attr_mode.attr,
> &dev_attr_extended_linear_cache_size.attr,
> + &dev_attr_locked.attr,
> NULL,
> };
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-01 17:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-01 12:49 [PATCH v2 1/1] cxl/region: Add a region sysfs interface for region lock status Li Ming
2026-04-01 16:50 ` Alison Schofield
2026-04-01 17:20 ` Dave Jiang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox