On Mo, 2024-07-01 at 19:14 +0200, Lucas Stach wrote: > This exposes a accumulated GPU active time per client via the > fdinfo infrastructure. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > v2: > - new patch > --- > drivers/gpu/drm/etnaviv/etnaviv_drv.c | 32 ++++++++++++++++++++++++++- > 1 file changed, 31 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c > index 6500f3999c5f..f42b982f9a16 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c > @@ -24,6 +24,7 @@ > #include "etnaviv_gem.h" > #include "etnaviv_mmu.h" > #include "etnaviv_perfmon.h" > +#include "common.xml.h" This seems to be unused. > /* > * DRM operations: > @@ -488,7 +489,36 @@ static const struct drm_ioctl_desc etnaviv_ioctls[] = { > ETNA_IOCTL(PM_QUERY_SIG, pm_query_sig, DRM_RENDER_ALLOW), > }; > > -DEFINE_DRM_GEM_FOPS(fops); > +static void etnaviv_fop_show_fdinfo(struct seq_file *m, struct file *f) > +{ > + struct drm_file *file = f->private_data; > + struct drm_device *dev = file->minor->dev; > + struct etnaviv_drm_private *priv = dev->dev_private; > + struct etnaviv_file_private *ctx = file->driver_priv; > + > + /* > + * For a description of the text output format used here, see > + * Documentation/gpu/drm-usage-stats.rst. > + */ > + seq_printf(m, "drm-driver:\t%s\n", dev->driver->name); > + seq_printf(m, "drm-client-id:\t%u\n", ctx->id); > + > + for (int i = 0; i < ETNA_MAX_PIPES; i++) { > + struct etnaviv_gpu *gpu = priv->gpu[i]; > + > + if (!gpu) > + continue; > + > + seq_printf(m, "drm-engine-pipe%d:\t%llu ns\n", i, > + drm_sched_entity_time_spent(&ctx->sched_entity[i])); Align to open parenthesis for consistency with most of the other code in this file? regards Philipp