habanalabs: skip idle status check if reset on device release
authorTomer Tayar <ttayar@habana.ai>
Fri, 30 Sep 2022 11:09:32 +0000 (14:09 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Wed, 23 Nov 2022 14:13:40 +0000 (16:13 +0200)
If reset upon device release is enabled, there is no need to check the
device idle status in hpriv_release(), because device is going to be
reset in any case.

Signed-off-by: Tomer Tayar <ttayar@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/common/device.c

index bf675cf..e60ed0c 100644 (file)
@@ -398,16 +398,14 @@ static void hpriv_release(struct kref *ref)
        mutex_destroy(&hpriv->ctx_lock);
        mutex_destroy(&hpriv->restore_phase_mutex);
 
-       if ((!hdev->pldm) && (hdev->pdev) &&
-                       (!hdev->asic_funcs->is_device_idle(hdev,
-                               idle_mask,
-                               HL_BUSY_ENGINES_MASK_EXT_SIZE, NULL))) {
-               dev_err(hdev->dev,
-                       "device not idle after user context is closed (0x%llx_%llx)\n",
-                       idle_mask[1], idle_mask[0]);
+       /* No need for idle status check if device is going to be reset in any case */
+       if (!hdev->reset_upon_device_release && hdev->pdev && !hdev->pldm)
+               device_is_idle = hdev->asic_funcs->is_device_idle(hdev, idle_mask,
+                                                       HL_BUSY_ENGINES_MASK_EXT_SIZE, NULL);
 
-               device_is_idle = false;
-       }
+       if (!device_is_idle)
+               dev_err(hdev->dev, "device not idle after user context is closed (0x%llx_%llx)\n",
+                       idle_mask[1], idle_mask[0]);
 
        /* We need to remove the user from the list to make sure the reset process won't
         * try to kill the user process. Because, if we got here, it means there are no