[igt-dev] [i-g-t] i915/perf: Correct the logic of finding i915 pmu event path

Chris Wilson chris at chris-wilson.co.uk
Fri Apr 10 10:31:11 UTC 2020


Quoting Terrence Xu (2020-04-10 11:20:46)
> Hardcoded i915 PMU event path /sys/bus/event_source/devices/i915
> isn't always correct when vGPU isn't on BDF 0:2.0 in virtualization
> environment.
> 
> e.g. It will show as sys/bus/event_source/devices/i915-0000:00:03.0
> when vGPU is on BDF 0:3.0.
> 
> Refine the path name so that intel_gpu_top can find the correct adapter.
> 
> Signed-off-by: Terrence Xu <terrence.xu at intel.com>
> ---
>  lib/igt_perf.c        | 15 ++++++++++++++-
>  tools/intel_gpu_top.c | 16 +++++++++++++++-
>  2 files changed, 29 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_perf.c b/lib/igt_perf.c
> index 418c1c188..3531209b3 100644
> --- a/lib/igt_perf.c
> +++ b/lib/igt_perf.c
> @@ -7,6 +7,7 @@
>  #include <sys/stat.h>
>  #include <sys/sysinfo.h>
>  #include <sys/sysmacros.h>
> +#include <dirent.h>
>  
>  #include "igt_perf.h"
>  
> @@ -75,11 +76,23 @@ uint64_t i915_perf_type_id(int i915)
>  uint64_t igt_perf_type_id(const char *device)
>  {
>         char buf[64];
> +       char dev[64];
>         ssize_t ret;
>         int fd;
> +       DIR *dir;
> +       struct dirent *dent;
> +
> +       dir = opendir("/sys/bus/event_source/devices/");

Nak, this is passed the explicit device to use.

i915_perf_type_id() takes the device fd and expands it to the pmu device
name.
-Chris


More information about the igt-dev mailing list