mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 1/2] cxl/mbox: Return success for CXL_MBOX_CMD_RC_BACKGROUND
@ 2026-11-03  2:43 Li Ming
  2026-11-03  2:43 ` [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status Li Ming
  0 siblings, 1 reply; 4+ messages in thread
From: Li Ming @ 2026-11-03  2:43 UTC (permalink / raw)
  To: dave, jic23, dave.jiang, alison.schofield, vishal.l.verma, djbw,
	iweiny, icheng
  Cc: linux-cxl, linux-kernel

In CXL subsystem, each mbox command hw return code is mapped to a
corresponding errno value. Currently, CXL_MBOX_CMD_RC_BACKGROUND is
mapped to -ENXIO.

However, per Table-8-208 in CXL r4.0 section 8.2.9.4.5.1, a BACKGROUND
HW return code indicates that the command has been accepted by the
device and continues execution asynchronously. It does not indicate a
command failure.

Return 0 instead of -ENXIO for CXL_MBOX_CMD_RC_BACKGROUND so that
callers do not treat a successfully started background operation as an
error.

Fixes: 92fcc1abab09 ("cxl/mbox: Improve handling of mbox_cmd hw return codes")
Signed-off-by: Li Ming <ming.li@zohomail.com>
---
v2:
- Add a reference to the relevant spec section in the commit log.
---
 drivers/cxl/cxlmem.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cxl/cxlmem.h b/drivers/cxl/cxlmem.h
index c401e3a1af06..cc71d7a84cdc 100644
--- a/drivers/cxl/cxlmem.h
+++ b/drivers/cxl/cxlmem.h
@@ -160,7 +160,7 @@ static inline struct cxl_ep *cxl_ep_load(struct cxl_port *port,
  */
 #define CMD_CMD_RC_TABLE							\
 	C(SUCCESS, 0, NULL),							\
-	C(BACKGROUND, -ENXIO, "background cmd started successfully"),           \
+	C(BACKGROUND, 0, "background cmd started successfully"),		\
 	C(INPUT, -ENXIO, "cmd input was invalid"),				\
 	C(UNSUPPORTED, -ENXIO, "cmd is not supported"),				\
 	C(INTERNAL, -ENXIO, "internal device error"),				\
-- 
2.43.0


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

* [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status
  2026-11-03  2:43 [PATCH v2 1/2] cxl/mbox: Return success for CXL_MBOX_CMD_RC_BACKGROUND Li Ming
@ 2026-11-03  2:43 ` Li Ming
  2026-11-05  4:41   ` Alison Schofield
  0 siblings, 1 reply; 4+ messages in thread
From: Li Ming @ 2026-11-03  2:43 UTC (permalink / raw)
  To: dave, jic23, dave.jiang, alison.schofield, vishal.l.verma, djbw,
	iweiny, icheng
  Cc: linux-cxl, linux-kernel

cxl_mbox_cmd_rctable already maps all mailbox command return codes to
errno values. Use the returned errno directly instead of checking
mailbox return codes separately to determine whether a command succeeded
or failed.

Signed-off-by: Li Ming <ming.li@zohomail.com>
---
v2:
- New patch.
---
 drivers/cxl/core/mbox.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
index 55828a836c01..bd91b03c4d21 100644
--- a/drivers/cxl/core/mbox.c
+++ b/drivers/cxl/core/mbox.c
@@ -270,9 +270,9 @@ int cxl_internal_send_cmd(struct cxl_mailbox *cxl_mbox,
 	if (rc)
 		return rc;
 
-	if (mbox_cmd->return_code != CXL_MBOX_CMD_RC_SUCCESS &&
-	    mbox_cmd->return_code != CXL_MBOX_CMD_RC_BACKGROUND)
-		return cxl_mbox_cmd_rc2errno(mbox_cmd);
+	rc = cxl_mbox_cmd_rc2errno(mbox_cmd);
+	if (rc)
+		return rc;
 
 	if (!out_size)
 		return 0;
-- 
2.43.0


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

* Re: [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status
  2026-11-03  2:43 ` [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status Li Ming
@ 2026-11-05  4:41   ` Alison Schofield
  2026-11-05  6:02     ` Li Ming
  0 siblings, 1 reply; 4+ messages in thread
From: Alison Schofield @ 2026-11-05  4:41 UTC (permalink / raw)
  To: Li Ming, dave
  Cc: dave, jic23, dave.jiang, vishal.l.verma, djbw, iweiny, icheng,
	linux-cxl, linux-kernel

On Tue, Nov 03, 2026 at 10:43:05AM +0800, Li Ming wrote:
> cxl_mbox_cmd_rctable already maps all mailbox command return codes to
> errno values. Use the returned errno directly instead of checking
> mailbox return codes separately to determine whether a command succeeded
> or failed.
> 
> Signed-off-by: Li Ming <ming.li@zohomail.com>
> ---
> v2:
> - New patch.
> ---
>  drivers/cxl/core/mbox.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
> index 55828a836c01..bd91b03c4d21 100644
> --- a/drivers/cxl/core/mbox.c
> +++ b/drivers/cxl/core/mbox.c
> @@ -270,9 +270,9 @@ int cxl_internal_send_cmd(struct cxl_mailbox *cxl_mbox,
>  	if (rc)
>  		return rc;
>  
> -	if (mbox_cmd->return_code != CXL_MBOX_CMD_RC_SUCCESS &&
> -	    mbox_cmd->return_code != CXL_MBOX_CMD_RC_BACKGROUND)
> -		return cxl_mbox_cmd_rc2errno(mbox_cmd);
> +	rc = cxl_mbox_cmd_rc2errno(mbox_cmd);
> +	if (rc)
> +		return rc;

Hi Ming,

The existing code really seemed to want BACKGROUND as a special case, so
I searched the history on this one,  Davidlohr and you discussed this in
2023 around sanitize[1] .

I do think it is confusing and if we can just follow the table codes,
that would be easier.

I'll let Davidlohr dig in on this one.

I read both these patches as cleanups but no bug to be fixed.


[1] https://lore.kernel.org/linux-cxl/mw5bsc5u72fdrgo7qovj6u2npg2asftzp3jeprwtmnvbvg7vet@fayzcxpurjl6/

-- Alison





>  
>  	if (!out_size)
>  		return 0;
> -- 
> 2.43.0
> 

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

* Re: [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status
  2026-11-05  4:41   ` Alison Schofield
@ 2026-11-05  6:02     ` Li Ming
  0 siblings, 0 replies; 4+ messages in thread
From: Li Ming @ 2026-11-05  6:02 UTC (permalink / raw)
  To: Alison Schofield, dave
  Cc: jic23, dave.jiang, vishal.l.verma, djbw, iweiny, icheng,
	linux-cxl, linux-kernel


在 2026/11/5 12:41, Alison Schofield 写道:
> On Tue, Nov 03, 2026 at 10:43:05AM +0800, Li Ming wrote:
>> cxl_mbox_cmd_rctable already maps all mailbox command return codes to
>> errno values. Use the returned errno directly instead of checking
>> mailbox return codes separately to determine whether a command succeeded
>> or failed.
>>
>> Signed-off-by: Li Ming <ming.li@zohomail.com>
>> ---
>> v2:
>> - New patch.
>> ---
>>   drivers/cxl/core/mbox.c | 6 +++---
>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
>> index 55828a836c01..bd91b03c4d21 100644
>> --- a/drivers/cxl/core/mbox.c
>> +++ b/drivers/cxl/core/mbox.c
>> @@ -270,9 +270,9 @@ int cxl_internal_send_cmd(struct cxl_mailbox *cxl_mbox,
>>   	if (rc)
>>   		return rc;
>>   
>> -	if (mbox_cmd->return_code != CXL_MBOX_CMD_RC_SUCCESS &&
>> -	    mbox_cmd->return_code != CXL_MBOX_CMD_RC_BACKGROUND)
>> -		return cxl_mbox_cmd_rc2errno(mbox_cmd);
>> +	rc = cxl_mbox_cmd_rc2errno(mbox_cmd);
>> +	if (rc)
>> +		return rc;
> Hi Ming,
>
> The existing code really seemed to want BACKGROUND as a special case, so
> I searched the history on this one,  Davidlohr and you discussed this in
> 2023 around sanitize[1] .
>
> I do think it is confusing and if we can just follow the table codes,
> that would be easier.

Hi Alison,

Thanks for your review.

I checked the link you shared, it is about the return code of a 
BACKGROUND cmd handling inside __cxl_pci_mbox_send_cmd(), because 
__cxl_pci_mbox_send_cmd() needs to handle both non-BACKGROUND and 
BACKGROUND cmds and returns the result. but in cxl_internal_send_cmd(), 
I think we can consider the cmd done whether it is a BACKGROUND command 
or not.

>
> I'll let Davidlohr dig in on this one.
Thanks.
>
> I read both these patches as cleanups but no bug to be fixed.

Sure, will drop the fixes tag.


Ming

>
>
> [1] https://lore.kernel.org/linux-cxl/mw5bsc5u72fdrgo7qovj6u2npg2asftzp3jeprwtmnvbvg7vet@fayzcxpurjl6/
>
> -- Alison
>
>
>
>
>
>>   
>>   	if (!out_size)
>>   		return 0;
>> -- 
>> 2.43.0
>>

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

end of thread, other threads:[~2026-11-05  6:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-03  2:43 [PATCH v2 1/2] cxl/mbox: Return success for CXL_MBOX_CMD_RC_BACKGROUND Li Ming
2026-11-03  2:43 ` [PATCH v2 2/2] cxl/mbox: Use mapped errno to determine command status Li Ming
2026-11-05  4:41   ` Alison Schofield
2026-11-05  6:02     ` Li Ming

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

all inboxes | Powered by JetHome®