On 2/10/26 08:42, Mario Limonciello wrote:
During process termination, several error messages are logged that are
not actual errors but expected conditions when a process is killed or
interrupted. This creates unnecessary noise in the kernel log.

The specific scenarios are:

1. HMM invalidation returns -ERESTARTSYS when the wait is interrupted by
    a signal during process cleanup. This is expected when a process is
    being terminated and should not be logged as an error.

2. Context destruction returns -ENODEV when the firmware or device has
    already stopped, which commonly occurs during cleanup if the device
    was already torn down. This is also an expected condition during
    orderly shutdown.

Downgrade these expected error conditions from error level to debug level
to reduce log noise while still keeping genuine errors visible.

Fixes: 97f27573837e ("accel/amdxdna: Fix potential NULL pointer dereference in 
context cleanup")
Signed-off-by: Mario Limonciello <[email protected]>
---
  drivers/accel/amdxdna/aie2_ctx.c     | 6 ++++--
  drivers/accel/amdxdna/aie2_message.c | 4 +++-
  2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_ctx.c
index 37d05f2e986f9..79f6316655e73 100644
--- a/drivers/accel/amdxdna/aie2_ctx.c
+++ b/drivers/accel/amdxdna/aie2_ctx.c
@@ -497,7 +497,7 @@ static void aie2_release_resource(struct amdxdna_hwctx 
*hwctx)
if (AIE2_FEATURE_ON(xdna->dev_handle, AIE2_TEMPORAL_ONLY)) {
                ret = aie2_destroy_context(xdna->dev_handle, hwctx);
-               if (ret)
+               if (ret && ret != -ENODEV)
                        XDNA_ERR(xdna, "Destroy temporal only context failed, ret 
%d", ret);
        } else {
                ret = xrs_release_resource(xdna->xrs_hdl, (uintptr_t)hwctx);
@@ -1070,6 +1070,8 @@ void aie2_hmm_invalidate(struct amdxdna_gem_obj *abo,
ret = dma_resv_wait_timeout(gobj->resv, DMA_RESV_USAGE_BOOKKEEP,
                                    true, MAX_SCHEDULE_TIMEOUT);
-       if (!ret || ret == -ERESTARTSYS)
+       if (!ret)
                XDNA_ERR(xdna, "Failed to wait for bo, ret %ld", ret);
+       else if (ret == -ERESTARTSYS)
+               XDNA_DBG(xdna, "Wait for bo interrupted by signal");
  }
diff --git a/drivers/accel/amdxdna/aie2_message.c 
b/drivers/accel/amdxdna/aie2_message.c
index 77e3cdf18658b..5697c0c2dd43f 100644
--- a/drivers/accel/amdxdna/aie2_message.c
+++ b/drivers/accel/amdxdna/aie2_message.c
@@ -216,8 +216,10 @@ static int aie2_destroy_context_req(struct amdxdna_dev_hdl 
*ndev, u32 id)
req.context_id = id;
        ret = aie2_send_mgmt_msg_wait(ndev, &msg);
-       if (ret)
+       if (ret && ret != -ENODEV)
                XDNA_WARN(xdna, "Destroy context failed, ret %d", 
ret);Reviewed-by:
+       else if (ret == -ENODEV)
+               XDNA_DBG(xdna, "Destroy context: device already stopped");
Reviewed-by: Lizhi Hou <[email protected]>
return ret;
  }

Reply via email to