Hi Deborah, On 2026-09-22 at 20:01:20 -0700, Deborah Brouwer wrote: > Currently profiling is enabled for every device by writing '1' into the > appropriate sysfs node. But Panthor uses a bit mask where cycle and > timestamp sampling are enabled by the first and second bits respectively. > > By default assume that writing '1' will enable profiling, but then adjust > the value to '3' for the Panthor driver. > > Closes: https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/work_items/209 > Signed-off-by: Deborah Brouwer <[email protected]>
Thank you for solving this, LGTM Acked-by: Kamil Konieczny <[email protected]> Can you ask some Panthor developer for review and/or Tested-by? Regards, Kamil > --- > lib/igt_profiling.c | 23 +++++++++++++++++++++-- > lib/igt_profiling.h | 1 + > 2 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/lib/igt_profiling.c b/lib/igt_profiling.c > index e1526ad98..5c62a3fb1 100644 > --- a/lib/igt_profiling.c > +++ b/lib/igt_profiling.c > @@ -50,7 +50,10 @@ struct igt_profiled_device *igt_devices_profiled(void) > > while ((entry = readdir(dev_dir)) != NULL) { > char path[PATH_MAX]; > + char driver_path[PATH_MAX]; > + char driver_link[PATH_MAX]; > char orig_state; > + ssize_t len; > int sysfs_fd; > > /* All DRM device entries are symlinks to other paths within > sysfs */ > @@ -87,7 +90,23 @@ struct igt_profiled_device *igt_devices_profiled(void) > } > > profiled_devices[i].syspath = strdup(path); > - profiled_devices[i++].original_state = orig_state; > + profiled_devices[i].original_state = orig_state; > + profiled_devices[i].enable_state = '1'; > + > + snprintf(driver_path, sizeof(driver_path), > "%s/%s/device/driver", > + SYSFS_DRM, entry->d_name); > + > + len = readlink(driver_path, driver_link, sizeof(driver_link) - > 1); > + if (len >= 0) { > + driver_link[len] = '\0'; > + > + if (strstr(driver_link, "/panthor")) { > + /* Enable both cycle and timestamp sampling. */ > + profiled_devices[i].enable_state = '3'; > + } > + } > + > + i++; > > close(sysfs_fd); > } > @@ -124,7 +143,7 @@ void igt_devices_configure_profiling(struct > igt_profiled_device *devices, bool e > if (sysfs_fd < 0) > continue; > > - write(sysfs_fd, enable ? "1" : &devices[i].original_state, 1); > + write(sysfs_fd, enable ? &devices[i].enable_state : > &devices[i].original_state, 1); > close(sysfs_fd); > } > } > diff --git a/lib/igt_profiling.h b/lib/igt_profiling.h > index b063d54e1..d38cc2bb6 100644 > --- a/lib/igt_profiling.h > +++ b/lib/igt_profiling.h > @@ -12,6 +12,7 @@ > struct igt_profiled_device { > char *syspath; > char original_state; > + char enable_state; > }; > > void igt_devices_configure_profiling(struct igt_profiled_device *devices, > bool enable); > > --- > base-commit: 65f84b280be2caf8ce376295d97987a808affdee > change-id: 20260922-b4-gputop_panthor-cbb78c0ffbf8 > > Best regards, > -- > Deborah Brouwer <[email protected]> >
