accel/habanalabs: print task name and request code upon ioctl failure
authorTomer Tayar <ttayar@habana.ai>
Tue, 16 May 2023 08:10:52 +0000 (11:10 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 9 Oct 2023 09:37:17 +0000 (12:37 +0300)
When an ioctl fails, it is useful to know what is the task command name
and the full ioctl request code, in addition to the task pid and the
ioctl number.
Add the additional information to the relevant debug error prints.

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

index 6a45a92344e9bde61baeed7fddfce295fb4b0086..549b2518fae0e817e4f70e93d00cad9677c2d85c 100644 (file)
@@ -1194,9 +1194,13 @@ static long _hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg,
                retcode = -EFAULT;
 
 out_err:
-       if (retcode)
-               dev_dbg_ratelimited(dev, "error in ioctl: pid=%d, cmd=0x%02x, nr=0x%02x\n",
-                         task_pid_nr(current), cmd, nr);
+       if (retcode) {
+               char task_comm[TASK_COMM_LEN];
+
+               dev_dbg_ratelimited(dev,
+                               "error in ioctl: pid=%d, comm=\"%s\", cmd=%#010x, nr=%#04x\n",
+                               task_pid_nr(current), get_task_comm(task_comm, current), cmd, nr);
+       }
 
        if (kdata != stack_kdata)
                kfree(kdata);
@@ -1219,8 +1223,11 @@ long hl_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
        if ((nr >= HL_COMMAND_START) && (nr < HL_COMMAND_END)) {
                ioctl = &hl_ioctls[nr];
        } else {
-               dev_dbg_ratelimited(hdev->dev, "invalid ioctl: pid=%d, nr=0x%02x\n",
-                       task_pid_nr(current), nr);
+               char task_comm[TASK_COMM_LEN];
+
+               dev_dbg_ratelimited(hdev->dev,
+                               "invalid ioctl: pid=%d, comm=\"%s\", cmd=%#010x, nr=%#04x\n",
+                               task_pid_nr(current), get_task_comm(task_comm, current), cmd, nr);
                return -ENOTTY;
        }
 
@@ -1242,8 +1249,11 @@ long hl_ioctl_control(struct file *filep, unsigned int cmd, unsigned long arg)
        if (nr == _IOC_NR(HL_IOCTL_INFO)) {
                ioctl = &hl_ioctls_control[nr];
        } else {
-               dev_dbg_ratelimited(hdev->dev_ctrl, "invalid ioctl: pid=%d, nr=0x%02x\n",
-                       task_pid_nr(current), nr);
+               char task_comm[TASK_COMM_LEN];
+
+               dev_dbg_ratelimited(hdev->dev_ctrl,
+                               "invalid ioctl: pid=%d, comm=\"%s\", cmd=%#010x, nr=%#04x\n",
+                               task_pid_nr(current), get_task_comm(task_comm, current), cmd, nr);
                return -ENOTTY;
        }