Linux CXL
 help / color / mirror / Atom feed
* [ndctl PATCH 1/2] cxl/list: emit decoder locked status
@ 2026-07-31  1:55 Alison Schofield
  2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Alison Schofield @ 2026-07-31  1:55 UTC (permalink / raw)
  To: nvdimm, Richard Cheng; +Cc: Alison Schofield, linux-cxl

A committed zero-sized HDM decoder reports size 0, so 'cxl list'
renders it identically to an ordinary unconfigured decoder ("state":
"disabled"). The locked attribute that distinguishes firmware-committed
decoders is not included in the JSON output.

The library already reads the decoder's locked attribute and exports
cxl_decoder_is_locked(); it was simply never emitted. Add a "locked"
field to the decoder JSON, following the emit-only-when-true idiom used
by the capability flags so existing output is unchanged for the common
unlocked case.

Signed-off-by: Alison Schofield <alison.schofield@intel.com>
---
 cxl/json.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/cxl/json.c b/cxl/json.c
index a92548828582..2214f7027d91 100644
--- a/cxl/json.c
+++ b/cxl/json.c
@@ -870,6 +870,12 @@ struct json_object *util_cxl_decoder_to_json(struct cxl_decoder *decoder,
 			json_object_object_add(jdecoder, "state", jobj);
 	}
 
+	if (cxl_decoder_is_locked(decoder)) {
+		jobj = json_object_new_boolean(true);
+		if (jobj)
+			json_object_object_add(jdecoder, "locked", jobj);
+	}
+
 	if (cxl_port_is_endpoint(port)) {
 		enum cxl_decoder_mode mode = cxl_decoder_get_mode(decoder);
 
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders
  2026-07-31  1:55 [ndctl PATCH 1/2] cxl/list: emit decoder locked status Alison Schofield
@ 2026-07-31  1:55 ` Alison Schofield
  2026-07-31 15:40   ` Dave Jiang
  2026-10-24  2:55   ` Alison Schofield
  2026-07-31 15:40 ` [ndctl PATCH 1/2] cxl/list: emit decoder locked status Dave Jiang
  2026-10-24  2:56 ` Alison Schofield
  2 siblings, 2 replies; 9+ messages in thread
From: Alison Schofield @ 2026-07-31  1:55 UTC (permalink / raw)
  To: nvdimm, Richard Cheng; +Cc: Alison Schofield, linux-cxl

'cxl list' hides zero-sized decoders unless --idle is given, assuming
they are unconfigured idle slots. That assumption does not hold for
locked HDM decoders, which may legitimately report size 0 while being
committed by firmware.

Do not suppress locked zero-sized decoders from the default listing.
Combined with the "locked" field in the decoder JSON, they are visible
and distinguishable from idle, unlocked slots that remain hidden
without --idle.

Signed-off-by: Alison Schofield <alison.schofield@intel.com>
---
 cxl/filter.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/cxl/filter.c b/cxl/filter.c
index 5d634d3b2512..e6d45ac7b9e6 100644
--- a/cxl/filter.c
+++ b/cxl/filter.c
@@ -847,7 +847,8 @@ static void walk_decoders(struct cxl_port *port, struct cxl_filter_params *p,
 		if (!util_cxl_decoder_filter_by_region(decoder,
 						       p->region_filter))
 			goto walk_children;
-		if (!p->idle && cxl_decoder_get_size(decoder) == 0)
+		if (!p->idle && cxl_decoder_get_size(decoder) == 0 &&
+		    !cxl_decoder_is_locked(decoder))
 			continue;
 		jdecoder = util_cxl_decoder_to_json(decoder, flags);
 		if (!decoder) {
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 1/2] cxl/list: emit decoder locked status
  2026-07-31  1:55 [ndctl PATCH 1/2] cxl/list: emit decoder locked status Alison Schofield
  2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
@ 2026-07-31 15:40 ` Dave Jiang
  2026-08-07  5:07   ` Richard Cheng
  2026-10-24  2:56 ` Alison Schofield
  2 siblings, 1 reply; 9+ messages in thread
From: Dave Jiang @ 2026-07-31 15:40 UTC (permalink / raw)
  To: Alison Schofield, nvdimm, Richard Cheng; +Cc: linux-cxl



On 7/30/26 6:55 PM, Alison Schofield wrote:
> A committed zero-sized HDM decoder reports size 0, so 'cxl list'
> renders it identically to an ordinary unconfigured decoder ("state":
> "disabled"). The locked attribute that distinguishes firmware-committed
> decoders is not included in the JSON output.
> 
> The library already reads the decoder's locked attribute and exports
> cxl_decoder_is_locked(); it was simply never emitted. Add a "locked"
> field to the decoder JSON, following the emit-only-when-true idiom used
> by the capability flags so existing output is unchanged for the common
> unlocked case.
> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>

Reviewed-by: Dave Jiang <dave.jiang@intel.com>

> ---
>  cxl/json.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/cxl/json.c b/cxl/json.c
> index a92548828582..2214f7027d91 100644
> --- a/cxl/json.c
> +++ b/cxl/json.c
> @@ -870,6 +870,12 @@ struct json_object *util_cxl_decoder_to_json(struct cxl_decoder *decoder,
>  			json_object_object_add(jdecoder, "state", jobj);
>  	}
>  
> +	if (cxl_decoder_is_locked(decoder)) {
> +		jobj = json_object_new_boolean(true);
> +		if (jobj)
> +			json_object_object_add(jdecoder, "locked", jobj);
> +	}
> +
>  	if (cxl_port_is_endpoint(port)) {
>  		enum cxl_decoder_mode mode = cxl_decoder_get_mode(decoder);
>  


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders
  2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
@ 2026-07-31 15:40   ` Dave Jiang
  2026-08-07  5:10     ` Richard Cheng
  2026-10-24  2:55   ` Alison Schofield
  1 sibling, 1 reply; 9+ messages in thread
From: Dave Jiang @ 2026-07-31 15:40 UTC (permalink / raw)
  To: Alison Schofield, nvdimm, Richard Cheng; +Cc: linux-cxl



On 7/30/26 6:55 PM, Alison Schofield wrote:
> 'cxl list' hides zero-sized decoders unless --idle is given, assuming
> they are unconfigured idle slots. That assumption does not hold for
> locked HDM decoders, which may legitimately report size 0 while being
> committed by firmware.
> 
> Do not suppress locked zero-sized decoders from the default listing.
> Combined with the "locked" field in the decoder JSON, they are visible
> and distinguishable from idle, unlocked slots that remain hidden
> without --idle.
> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>

Reviewed-by: Dave Jiang <dave.jiang@intel.com>

> ---
>  cxl/filter.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/cxl/filter.c b/cxl/filter.c
> index 5d634d3b2512..e6d45ac7b9e6 100644
> --- a/cxl/filter.c
> +++ b/cxl/filter.c
> @@ -847,7 +847,8 @@ static void walk_decoders(struct cxl_port *port, struct cxl_filter_params *p,
>  		if (!util_cxl_decoder_filter_by_region(decoder,
>  						       p->region_filter))
>  			goto walk_children;
> -		if (!p->idle && cxl_decoder_get_size(decoder) == 0)
> +		if (!p->idle && cxl_decoder_get_size(decoder) == 0 &&
> +		    !cxl_decoder_is_locked(decoder))
>  			continue;
>  		jdecoder = util_cxl_decoder_to_json(decoder, flags);
>  		if (!decoder) {


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 1/2] cxl/list: emit decoder locked status
  2026-07-31 15:40 ` [ndctl PATCH 1/2] cxl/list: emit decoder locked status Dave Jiang
@ 2026-08-07  5:07   ` Richard Cheng
  0 siblings, 0 replies; 9+ messages in thread
From: Richard Cheng @ 2026-08-07  5:07 UTC (permalink / raw)
  To: Dave Jiang; +Cc: Alison Schofield, nvdimm, linux-cxl

On Fri, Jul 31, 2026 at 08:40:08AM +0800, Dave Jiang wrote:
> 
> 
> On 7/30/26 6:55 PM, Alison Schofield wrote:
> > A committed zero-sized HDM decoder reports size 0, so 'cxl list'
> > renders it identically to an ordinary unconfigured decoder ("state":
> > "disabled"). The locked attribute that distinguishes firmware-committed
> > decoders is not included in the JSON output.
> > 
> > The library already reads the decoder's locked attribute and exports
> > cxl_decoder_is_locked(); it was simply never emitted. Add a "locked"
> > field to the decoder JSON, following the emit-only-when-true idiom used
> > by the capability flags so existing output is unchanged for the common
> > unlocked case.
> > 
> > Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> 
> Reviewed-by: Dave Jiang <dave.jiang@intel.com>
>

Thanks alot !

Reviewed-by: Richard Cheng <icheng@nvidia.com>

Best regards,
Richard Cheng.
 
> > ---
> >  cxl/json.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/cxl/json.c b/cxl/json.c
> > index a92548828582..2214f7027d91 100644
> > --- a/cxl/json.c
> > +++ b/cxl/json.c
> > @@ -870,6 +870,12 @@ struct json_object *util_cxl_decoder_to_json(struct cxl_decoder *decoder,
> >  			json_object_object_add(jdecoder, "state", jobj);
> >  	}
> >  
> > +	if (cxl_decoder_is_locked(decoder)) {
> > +		jobj = json_object_new_boolean(true);
> > +		if (jobj)
> > +			json_object_object_add(jdecoder, "locked", jobj);
> > +	}
> > +
> >  	if (cxl_port_is_endpoint(port)) {
> >  		enum cxl_decoder_mode mode = cxl_decoder_get_mode(decoder);
> >  
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders
  2026-07-31 15:40   ` Dave Jiang
@ 2026-08-07  5:10     ` Richard Cheng
  2026-10-24  2:29       ` Alison Schofield
  0 siblings, 1 reply; 9+ messages in thread
From: Richard Cheng @ 2026-08-07  5:10 UTC (permalink / raw)
  To: Dave Jiang; +Cc: Alison Schofield, nvdimm, linux-cxl

On Fri, Jul 31, 2026 at 08:40:24AM +0800, Dave Jiang wrote:
> 
> 
> On 7/30/26 6:55 PM, Alison Schofield wrote:
> > 'cxl list' hides zero-sized decoders unless --idle is given, assuming
> > they are unconfigured idle slots. That assumption does not hold for
> > locked HDM decoders, which may legitimately report size 0 while being
> > committed by firmware.
> > 
> > Do not suppress locked zero-sized decoders from the default listing.
> > Combined with the "locked" field in the decoder JSON, they are visible
> > and distinguishable from idle, unlocked slots that remain hidden
> > without --idle.
> >

Hi Alison,

patch looks good to me, just one small question,
what if the zero size decoder is programmed by userspace, not from FW.

in which case cxl_decoder_is_locked() won't return true, can we handle that situation ?

Reviewed-by: Richard Cheng <icheng@nvidia.com>
 
Best regards,
Richard Cheng.

> > Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> 
> Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> 
> > ---
> >  cxl/filter.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/cxl/filter.c b/cxl/filter.c
> > index 5d634d3b2512..e6d45ac7b9e6 100644
> > --- a/cxl/filter.c
> > +++ b/cxl/filter.c
> > @@ -847,7 +847,8 @@ static void walk_decoders(struct cxl_port *port, struct cxl_filter_params *p,
> >  		if (!util_cxl_decoder_filter_by_region(decoder,
> >  						       p->region_filter))
> >  			goto walk_children;
> > -		if (!p->idle && cxl_decoder_get_size(decoder) == 0)
> > +		if (!p->idle && cxl_decoder_get_size(decoder) == 0 &&
> > +		    !cxl_decoder_is_locked(decoder))
> >  			continue;
> >  		jdecoder = util_cxl_decoder_to_json(decoder, flags);
> >  		if (!decoder) {
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders
  2026-08-07  5:10     ` Richard Cheng
@ 2026-10-24  2:29       ` Alison Schofield
  0 siblings, 0 replies; 9+ messages in thread
From: Alison Schofield @ 2026-10-24  2:29 UTC (permalink / raw)
  To: Richard Cheng; +Cc: Dave Jiang, nvdimm, linux-cxl

On Fri, Aug 07, 2026 at 01:10:47PM +0800, Richard Cheng wrote:
> On Fri, Jul 31, 2026 at 08:40:24AM +0800, Dave Jiang wrote:
> > 
> > 
> > On 7/30/26 6:55 PM, Alison Schofield wrote:
> > > 'cxl list' hides zero-sized decoders unless --idle is given, assuming
> > > they are unconfigured idle slots. That assumption does not hold for
> > > locked HDM decoders, which may legitimately report size 0 while being
> > > committed by firmware.
> > > 
> > > Do not suppress locked zero-sized decoders from the default listing.
> > > Combined with the "locked" field in the decoder JSON, they are visible
> > > and distinguishable from idle, unlocked slots that remain hidden
> > > without --idle.
> > >
> 
> Hi Alison,
> 
> patch looks good to me, just one small question,
> what if the zero size decoder is programmed by userspace, not from FW.

I don't see a path to that happening. Userspace can't commit a zero-size decoder.
Writing 0 to dpa_size just frees the allocation, and region attach rejects empty
decoders, so a committed zero-size decoder can only come from firmware.

> 
> in which case cxl_decoder_is_locked() won't return true, can we handle that situation ?
> 

More generally, an unlocked committed zero-size decoder looks identical to an idle slot
in sysfs, so telling them apart would need a new kernel attribute.

I'm going to merge these patches as is, and as we discover new flavors and ways to list
them we can add on.

Thanks for the reviews!

-- Alison


> Reviewed-by: Richard Cheng <icheng@nvidia.com>
>  
> Best regards,
> Richard Cheng.
> 
> > > Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> > 
> > Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> > 
> > > ---
> > >  cxl/filter.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/cxl/filter.c b/cxl/filter.c
> > > index 5d634d3b2512..e6d45ac7b9e6 100644
> > > --- a/cxl/filter.c
> > > +++ b/cxl/filter.c
> > > @@ -847,7 +847,8 @@ static void walk_decoders(struct cxl_port *port, struct cxl_filter_params *p,
> > >  		if (!util_cxl_decoder_filter_by_region(decoder,
> > >  						       p->region_filter))
> > >  			goto walk_children;
> > > -		if (!p->idle && cxl_decoder_get_size(decoder) == 0)
> > > +		if (!p->idle && cxl_decoder_get_size(decoder) == 0 &&
> > > +		    !cxl_decoder_is_locked(decoder))
> > >  			continue;
> > >  		jdecoder = util_cxl_decoder_to_json(decoder, flags);
> > >  		if (!decoder) {
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders
  2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
  2026-07-31 15:40   ` Dave Jiang
@ 2026-10-24  2:55   ` Alison Schofield
  1 sibling, 0 replies; 9+ messages in thread
From: Alison Schofield @ 2026-10-24  2:55 UTC (permalink / raw)
  To: nvdimm, Richard Cheng; +Cc: linux-cxl

On Thu, Jul 30, 2026 at 06:55:20PM -0700, Alison Schofield wrote:
> 'cxl list' hides zero-sized decoders unless --idle is given, assuming
> they are unconfigured idle slots. That assumption does not hold for
> locked HDM decoders, which may legitimately report size 0 while being
> committed by firmware.
> 
> Do not suppress locked zero-sized decoders from the default listing.
> Combined with the "locked" field in the decoder JSON, they are visible
> and distinguishable from idle, unlocked slots that remain hidden
> without --idle.

Applied to pending for NDCTL v86
https://github.com/pmem/ndctl/commit/e252f4cc0792

> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> ---
>  cxl/filter.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/cxl/filter.c b/cxl/filter.c
> index 5d634d3b2512..e6d45ac7b9e6 100644
> --- a/cxl/filter.c
> +++ b/cxl/filter.c
> @@ -847,7 +847,8 @@ static void walk_decoders(struct cxl_port *port, struct cxl_filter_params *p,
>  		if (!util_cxl_decoder_filter_by_region(decoder,
>  						       p->region_filter))
>  			goto walk_children;
> -		if (!p->idle && cxl_decoder_get_size(decoder) == 0)
> +		if (!p->idle && cxl_decoder_get_size(decoder) == 0 &&
> +		    !cxl_decoder_is_locked(decoder))
>  			continue;
>  		jdecoder = util_cxl_decoder_to_json(decoder, flags);
>  		if (!decoder) {
> -- 
> 2.37.3
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ndctl PATCH 1/2] cxl/list: emit decoder locked status
  2026-07-31  1:55 [ndctl PATCH 1/2] cxl/list: emit decoder locked status Alison Schofield
  2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
  2026-07-31 15:40 ` [ndctl PATCH 1/2] cxl/list: emit decoder locked status Dave Jiang
@ 2026-10-24  2:56 ` Alison Schofield
  2 siblings, 0 replies; 9+ messages in thread
From: Alison Schofield @ 2026-10-24  2:56 UTC (permalink / raw)
  To: nvdimm, Richard Cheng; +Cc: linux-cxl

On Thu, Jul 30, 2026 at 06:55:19PM -0700, Alison Schofield wrote:
> A committed zero-sized HDM decoder reports size 0, so 'cxl list'
> renders it identically to an ordinary unconfigured decoder ("state":
> "disabled"). The locked attribute that distinguishes firmware-committed
> decoders is not included in the JSON output.
> 
> The library already reads the decoder's locked attribute and exports
> cxl_decoder_is_locked(); it was simply never emitted. Add a "locked"
> field to the decoder JSON, following the emit-only-when-true idiom used
> by the capability flags so existing output is unchanged for the common
> unlocked case.

Applied to pending for NDCTL v86
https://github.com/pmem/ndctl/commit/007acdd87f15


> 
> Signed-off-by: Alison Schofield <alison.schofield@intel.com>
> ---
>  cxl/json.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/cxl/json.c b/cxl/json.c
> index a92548828582..2214f7027d91 100644
> --- a/cxl/json.c
> +++ b/cxl/json.c
> @@ -870,6 +870,12 @@ struct json_object *util_cxl_decoder_to_json(struct cxl_decoder *decoder,
>  			json_object_object_add(jdecoder, "state", jobj);
>  	}
>  
> +	if (cxl_decoder_is_locked(decoder)) {
> +		jobj = json_object_new_boolean(true);
> +		if (jobj)
> +			json_object_object_add(jdecoder, "locked", jobj);
> +	}
> +
>  	if (cxl_port_is_endpoint(port)) {
>  		enum cxl_decoder_mode mode = cxl_decoder_get_mode(decoder);
>  
> -- 
> 2.37.3
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-10-24  2:56 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-31  1:55 [ndctl PATCH 1/2] cxl/list: emit decoder locked status Alison Schofield
2026-07-31  1:55 ` [ndctl PATCH 2/2] cxl/list: list locked zero-sized decoders Alison Schofield
2026-07-31 15:40   ` Dave Jiang
2026-08-07  5:10     ` Richard Cheng
2026-10-24  2:29       ` Alison Schofield
2026-10-24  2:55   ` Alison Schofield
2026-07-31 15:40 ` [ndctl PATCH 1/2] cxl/list: emit decoder locked status Dave Jiang
2026-08-07  5:07   ` Richard Cheng
2026-10-24  2:56 ` Alison Schofield

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox