Message ID | 20240508132557.2388267-1-jacek.lawrynowicz@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | accel/ivpu: Changes for 6.10 | expand |
Hi, Please ignore this patch. It got here by mistake. There is another one sent as a part of a patchset. On 08.05.2024 15:25, Jacek Lawrynowicz wrote: > From: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com> > > Add fw_dyndbg file that can be used to control FW logging. > > Signed-off-by: Tomasz Rusinowicz <tomasz.rusinowicz@intel.com> > Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com> > --- > drivers/accel/ivpu/ivpu_debugfs.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/drivers/accel/ivpu/ivpu_debugfs.c b/drivers/accel/ivpu/ivpu_debugfs.c > index 6ff967e595cf..b6c7d6a53c79 100644 > --- a/drivers/accel/ivpu/ivpu_debugfs.c > +++ b/drivers/accel/ivpu/ivpu_debugfs.c > @@ -145,6 +145,30 @@ static const struct file_operations dvfs_mode_fops = { > .write = dvfs_mode_fops_write, > }; > > +static ssize_t > +fw_dyndbg_fops_write(struct file *file, const char __user *user_buf, size_t size, loff_t *pos) > +{ > + struct ivpu_device *vdev = file->private_data; > + char buffer[VPU_DYNDBG_CMD_MAX_LEN] = {}; > + int ret; > + > + if (size >= VPU_DYNDBG_CMD_MAX_LEN) > + return -EINVAL; > + > + ret = strncpy_from_user(buffer, user_buf, size); > + if (ret < 0) > + return ret; > + > + ivpu_jsm_dyndbg_control(vdev, buffer, size); > + return size; > +} > + > +static const struct file_operations fw_dyndbg_fops = { > + .owner = THIS_MODULE, > + .open = simple_open, > + .write = fw_dyndbg_fops_write, > +}; > + > static int fw_log_show(struct seq_file *s, void *v) > { > struct ivpu_device *vdev = s->private; > @@ -369,6 +393,8 @@ void ivpu_debugfs_init(struct ivpu_device *vdev) > debugfs_create_file("dvfs_mode", 0200, debugfs_root, vdev, > &dvfs_mode_fops); > > + debugfs_create_file("fw_dyndbg", 0200, debugfs_root, vdev, > + &fw_dyndbg_fops); > debugfs_create_file("fw_log", 0644, debugfs_root, vdev, > &fw_log_fops); > debugfs_create_file("fw_trace_destination_mask", 0200, debugfs_root, vdev,
diff --git a/drivers/accel/ivpu/ivpu_debugfs.c b/drivers/accel/ivpu/ivpu_debugfs.c index 6ff967e595cf..b6c7d6a53c79 100644 --- a/drivers/accel/ivpu/ivpu_debugfs.c +++ b/drivers/accel/ivpu/ivpu_debugfs.c @@ -145,6 +145,30 @@ static const struct file_operations dvfs_mode_fops = { .write = dvfs_mode_fops_write, }; +static ssize_t +fw_dyndbg_fops_write(struct file *file, const char __user *user_buf, size_t size, loff_t *pos) +{ + struct ivpu_device *vdev = file->private_data; + char buffer[VPU_DYNDBG_CMD_MAX_LEN] = {}; + int ret; + + if (size >= VPU_DYNDBG_CMD_MAX_LEN) + return -EINVAL; + + ret = strncpy_from_user(buffer, user_buf, size); + if (ret < 0) + return ret; + + ivpu_jsm_dyndbg_control(vdev, buffer, size); + return size; +} + +static const struct file_operations fw_dyndbg_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .write = fw_dyndbg_fops_write, +}; + static int fw_log_show(struct seq_file *s, void *v) { struct ivpu_device *vdev = s->private; @@ -369,6 +393,8 @@ void ivpu_debugfs_init(struct ivpu_device *vdev) debugfs_create_file("dvfs_mode", 0200, debugfs_root, vdev, &dvfs_mode_fops); + debugfs_create_file("fw_dyndbg", 0200, debugfs_root, vdev, + &fw_dyndbg_fops); debugfs_create_file("fw_log", 0644, debugfs_root, vdev, &fw_log_fops); debugfs_create_file("fw_trace_destination_mask", 0200, debugfs_root, vdev,