<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="moz-cite-prefix">On 12/06/2023 15:07, Oded Gabbay wrote:<br>
</div>
<blockquote type="cite" cite="mid:20230612120733.3079507-2-ogabbay@kernel.org">
<pre class="moz-quote-pre" wrap="">If scrubbing memory after user released device has failed it means
the device is in a bad state and should be reset.

Signed-off-by: Oded Gabbay <a class="moz-txt-link-rfc2396E" href="mailto:ogabbay@kernel.org"><ogabbay@kernel.org></a>
---
 drivers/accel/habanalabs/common/device.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/accel/habanalabs/common/device.c b/drivers/accel/habanalabs/common/device.c
index 5e61761b8c11..d7d9198b2103 100644
--- a/drivers/accel/habanalabs/common/device.c
+++ b/drivers/accel/habanalabs/common/device.c
@@ -454,8 +454,10 @@ static void hpriv_release(struct kref *ref)
                /* Scrubbing is handled within hl_device_reset(), so here need to do it directly */
                int rc = hdev->asic_funcs->scrub_device_mem(hdev);
 
-               if (rc)
+               if (rc) {
                        dev_err(hdev->dev, "failed to scrub memory from hpriv release (%d)\n", rc);
+                       hl_device_reset(hdev, HL_DRV_RESET_HARD);
+               }
        }
 
        /* Now we can mark the compute_ctx as not active. Even if a reset is running in a different
</pre>
</blockquote>
<p>Reviewed-by: Ofir Bitton <<a href="mailto:obitton@habana.ai" class="moz-txt-link-freetext">obitton@habana.ai</a>></p>
</body>
</html>