habanalabs: fix soft reset flow in case of failure
authorDani Liberman <dliberman@habana.ai>
Tue, 11 Jan 2022 09:10:20 +0000 (11:10 +0200)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 28 Feb 2022 12:22:03 +0000 (14:22 +0200)
In case of soft reset failure, hard reset should be initiated, but
reset flags were not set to enable it, which caused another soft reset
followed by another failure.
Updated reset flags to enable hard reset flow in case of soft reset
failure.

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

index c98a0a81e7d5872789a7d8a13a75c77410313476..727315b36b8b9eae99de50d7248103cae0d823ca 100644 (file)
@@ -1293,11 +1293,14 @@ out_err:
                hdev->reset_info.hard_reset_cnt++;
        } else if (reset_upon_device_release) {
                dev_err(hdev->dev, "Failed to reset device after user release\n");
+               flags |= HL_DRV_RESET_HARD;
+               flags &= ~HL_DRV_RESET_DEV_RELEASE;
                hard_reset = true;
                goto again;
        } else {
                dev_err(hdev->dev, "Failed to do soft-reset\n");
                hdev->reset_info.soft_reset_cnt++;
+               flags |= HL_DRV_RESET_HARD;
                hard_reset = true;
                goto again;
        }