* [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®