[Intel-gfx] [PATCH i-g-t 6/6] intel_gpu_top: Add a sanity check discovered busy metric is per engine

Rogozhkin, Dmitry V dmitry.v.rogozhkin at intel.com
Wed Dec 1 02:20:14 UTC 2021


On Fri, 2021-11-19 at 12:59 +0000, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> 
> Adding a cross-check with ABI config name space and not just relying
> on
> sysfs names.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin at intel.com>
> ---
>  tools/intel_gpu_top.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
> index 41c59a72c09d..81c724d1fe1c 100644
> --- a/tools/intel_gpu_top.c
> +++ b/tools/intel_gpu_top.c
> @@ -376,6 +376,12 @@ static struct engines *discover_engines(char
> *device)
>  			break;
>  		}
>  
> +		/* Double check config is an engine config. */
> +		if (engine->busy.config >= __I915_PMU_OTHER(0)) {
> +			free((void *)engine->name);
> +			continue;
> +		}
> +
>  		engine->class = (engine->busy.config &
>  				 (__I915_PMU_OTHER(0) - 1)) >>
>  				I915_PMU_CLASS_SHIFT;

This works for me.
Acked-by: Dmitry Rogozhkin <dmitry.v.rogozhkin at intel.com>

However, looking to the existing code down below the place where you've
added a fix, it seems to me that 'free((void *)engine->name)' might be
missing on a number of other error paths and on non-error exit path as
well.



More information about the Intel-gfx mailing list