The HW IP information is relevant even if the device is disabled or in
reset, so always handle the corresponding INFO IOCTL opcode.

Signed-off-by: Tomer Tayar <[email protected]>
---
 drivers/misc/habanalabs/habanalabs_ioctl.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/misc/habanalabs/habanalabs_ioctl.c 
b/drivers/misc/habanalabs/habanalabs_ioctl.c
index 3ce65459b01c..589324ac19d0 100644
--- a/drivers/misc/habanalabs/habanalabs_ioctl.c
+++ b/drivers/misc/habanalabs/habanalabs_ioctl.c
@@ -204,10 +204,21 @@ static int _hl_info_ioctl(struct hl_fpriv *hpriv, void 
*data,
        struct hl_device *hdev = hpriv->hdev;
        int rc;
 
-       /* We want to return device status even if it disabled or in reset */
-       if (args->op == HL_INFO_DEVICE_STATUS)
+       /*
+        * Information is returned for the following opcodes even if the device
+        * is disabled or in reset.
+        */
+       switch (args->op) {
+       case HL_INFO_HW_IP_INFO:
+               return hw_ip_info(hdev, args);
+
+       case HL_INFO_DEVICE_STATUS:
                return device_status_info(hdev, args);
 
+       default:
+               break;
+       }
+
        if (hl_device_disabled_or_in_reset(hdev)) {
                dev_warn_ratelimited(dev,
                        "Device is %s. Can't execute INFO IOCTL\n",
@@ -216,10 +227,6 @@ static int _hl_info_ioctl(struct hl_fpriv *hpriv, void 
*data,
        }
 
        switch (args->op) {
-       case HL_INFO_HW_IP_INFO:
-               rc = hw_ip_info(hdev, args);
-               break;
-
        case HL_INFO_HW_EVENTS:
                rc = hw_events_info(hdev, args);
                break;
-- 
2.17.1

Reply via email to