Hi Boris,
On 2026-09-23 at 18:15:27 +0200, Boris Brezillon wrote:
> On Wed, 23 Sep 2026 12:29:21 +0200
> Kamil Konieczny <[email protected]> wrote:
> 
> > 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?
> 
> Reviewed-by: Boris Brezillon <[email protected]>
> 

Applied, thank you all!



Regards,
Kamil

> > 
> > 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]>
> > >   
> 

Reply via email to