[PATCH V1] accel/amdxdna: Return errors for failed debug BO commands

Lizhi Hou posted 1 patch 1 week, 2 days ago
drivers/accel/amdxdna/aie2_ctx.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
[PATCH V1] accel/amdxdna: Return errors for failed debug BO commands
Posted by Lizhi Hou 1 week, 2 days ago
The config and sync debug BO commands currently may report success even
when the operation fails.

Capture the firmware return status and propagate the corresponding error
to userspace.

Fixes: 7ea046838021 ("accel/amdxdna: Support firmware debug buffer")
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
---
 drivers/accel/amdxdna/aie2_ctx.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_ctx.c
index 2ad343728782..da89b3701f5b 100644
--- a/drivers/accel/amdxdna/aie2_ctx.c
+++ b/drivers/accel/amdxdna/aie2_ctx.c
@@ -305,17 +305,13 @@ aie2_sched_drvcmd_resp_handler(void *handle, void __iomem *data, size_t size)
 	struct amdxdna_sched_job *job = handle;
 	int ret = 0;
 
-	if (unlikely(!data))
-		goto out;
-
-	if (unlikely(size != sizeof(u32))) {
+	if (unlikely(!data || size != sizeof(u32))) {
+		job->drv_cmd->result = U32_MAX;
 		ret = -EINVAL;
-		goto out;
+	} else {
+		job->drv_cmd->result = readl(data);
 	}
 
-	job->drv_cmd->result = readl(data);
-
-out:
 	aie2_sched_notify(job);
 	return ret;
 }
@@ -940,6 +936,7 @@ static int aie2_hwctx_cfg_debug_bo(struct amdxdna_hwctx *hwctx, u32 bo_hdl,
 	aie2_cmd_wait(hwctx, seq);
 	if (cmd.result) {
 		XDNA_ERR(xdna, "Response failure 0x%x", cmd.result);
+		ret = -EINVAL;
 		goto put_obj;
 	}
 
-- 
2.34.1
Re: [PATCH V1] accel/amdxdna: Return errors for failed debug BO commands
Posted by Mario Limonciello 1 week ago

On 5/29/26 18:21, Lizhi Hou wrote:
> The config and sync debug BO commands currently may report success even
> when the operation fails.
> 
> Capture the firmware return status and propagate the corresponding error
> to userspace.
> 
> Fixes: 7ea046838021 ("accel/amdxdna: Support firmware debug buffer")
> Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
> ---
>   drivers/accel/amdxdna/aie2_ctx.c | 13 +++++--------
>   1 file changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_ctx.c
> index 2ad343728782..da89b3701f5b 100644
> --- a/drivers/accel/amdxdna/aie2_ctx.c
> +++ b/drivers/accel/amdxdna/aie2_ctx.c
> @@ -305,17 +305,13 @@ aie2_sched_drvcmd_resp_handler(void *handle, void __iomem *data, size_t size)
>   	struct amdxdna_sched_job *job = handle;
>   	int ret = 0;
>   
> -	if (unlikely(!data))
> -		goto out;
> -
> -	if (unlikely(size != sizeof(u32))) {
> +	if (unlikely(!data || size != sizeof(u32))) {
> +		job->drv_cmd->result = U32_MAX;
>   		ret = -EINVAL;
> -		goto out;
> +	} else {
> +		job->drv_cmd->result = readl(data);
>   	}
>   
> -	job->drv_cmd->result = readl(data);
> -
> -out:
>   	aie2_sched_notify(job);
>   	return ret;
>   }
> @@ -940,6 +936,7 @@ static int aie2_hwctx_cfg_debug_bo(struct amdxdna_hwctx *hwctx, u32 bo_hdl,
>   	aie2_cmd_wait(hwctx, seq);
>   	if (cmd.result) {
>   		XDNA_ERR(xdna, "Response failure 0x%x", cmd.result);
> +		ret = -EINVAL;
>   		goto put_obj;
>   	}
>