2019-08-08 12:37:58

by Tomer Tayar

[permalink] [raw]
Subject: [PATCH] habanalabs: Handle HW_IP_INFO if device disabled or in reset

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


2019-08-08 14:13:33

by Oded Gabbay

[permalink] [raw]
Subject: Re: [PATCH] habanalabs: Handle HW_IP_INFO if device disabled or in reset

On Thu, Aug 8, 2019 at 3:30 PM Tomer Tayar <[email protected]> wrote:
>
> 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
>

This patch is:
Reviewed-by: Oded Gabbay <[email protected]>