[igt-dev] [PATCH i-g-t v2 4/9] lib/intel_compute: Add name field for debugging purposes

Francois Dugast francois.dugast at intel.com
Fri Sep 8 09:05:50 UTC 2023


On Tue, Sep 05, 2023 at 03:33:04PM +0200, Zbigniew Kempczyński wrote:
> Debugging without knowledge about object characteristics is hard and
> time consuming. Simple name field added for printing binded addresses
> and their sizes might speed up development. I experienced this on
> extending to DG2 so I decided to permanently add it. But to avoid
> annoying output this is limited to igt_debug() which will print
> only on user request or on the test failure.
> 
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> Cc: Christoph Manszewski <christoph.manszewski at intel.com>
> Cc: Francois Dugast <francois.dugast at intel.com>
> Cc: Mauro Carvalho Chehab <mchehab at kernel.org>

Reviewed-by: Francois Dugast <francois.dugast at intel.com>

> ---
>  lib/intel_compute.c | 33 ++++++++++++++++++++++++++-------
>  1 file changed, 26 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/intel_compute.c b/lib/intel_compute.c
> index b42f3eca0e..a1e87ef46f 100644
> --- a/lib/intel_compute.c
> +++ b/lib/intel_compute.c
> @@ -37,6 +37,7 @@ struct bo_dict_entry {
>  	uint64_t addr;
>  	uint32_t size;
>  	void *data;
> +	const char *name;
>  };
>  
>  struct bo_execenv {
> @@ -92,6 +93,11 @@ static void bo_execenv_bind(struct bo_execenv *execenv,
>  						 bo_dict[i].addr, bo_dict[i].size, &sync, 1);
>  			syncobj_wait(fd, &sync.handle, 1, INT64_MAX, 0, NULL);
>  			memset(bo_dict[i].data, 0, bo_dict[i].size);
> +
> +			igt_debug("[i: %2d name: %20s] data: %p, addr: %16llx, size: %llx\n",
> +				  i, bo_dict[i].name, bo_dict[i].data,
> +				  (long long)bo_dict[i].addr,
> +				  (long long)bo_dict[i].size);
>  		}
>  
>  		syncobj_destroy(fd, sync.handle);
> @@ -480,13 +486,26 @@ static void tgl_compute_exec(int fd, const unsigned char *kernel,
>  {
>  #define TGL_BO_DICT_ENTRIES 7
>  	struct bo_dict_entry bo_dict[TGL_BO_DICT_ENTRIES] = {
> -		{ .addr = ADDR_INDIRECT_OBJECT_BASE + OFFSET_KERNEL}, // kernel
> -		{ .addr = ADDR_DYNAMIC_STATE_BASE, .size =  0x1000}, // dynamic state
> -		{ .addr = ADDR_SURFACE_STATE_BASE, .size =  0x1000}, // surface state
> -		{ .addr = ADDR_INDIRECT_OBJECT_BASE + OFFSET_INDIRECT_DATA_START, .size =  0x10000}, // indirect data
> -		{ .addr = ADDR_INPUT, .size = SIZE_BUFFER_INPUT }, // input
> -		{ .addr = ADDR_OUTPUT, .size = SIZE_BUFFER_OUTPUT }, // output
> -		{ .addr = ADDR_BATCH, .size = SIZE_BATCH }, // batch
> +		{ .addr = ADDR_INDIRECT_OBJECT_BASE + OFFSET_KERNEL,
> +		  .name = "kernel" },
> +		{ .addr = ADDR_DYNAMIC_STATE_BASE,
> +		  .size =  0x1000,
> +		  .name = "dynamic state base" },
> +		{ .addr = ADDR_SURFACE_STATE_BASE,
> +		  .size =  0x1000,
> +		  .name = "surface state base" },
> +		{ .addr = ADDR_INDIRECT_OBJECT_BASE + OFFSET_INDIRECT_DATA_START,
> +		  .size =  0x10000,
> +		  .name = "indirect data start" },
> +		{ .addr = ADDR_INPUT,
> +		  .size = SIZE_BUFFER_INPUT,
> +		  .name = "input" },
> +		{ .addr = ADDR_OUTPUT,
> +		  .size = SIZE_BUFFER_OUTPUT,
> +		  .name = "output" },
> +		{ .addr = ADDR_BATCH,
> +		  .size = SIZE_BATCH,
> +		  .name = "batch" },
>  	};
>  	struct bo_execenv execenv;
>  	float *dinput;
> -- 
> 2.34.1
> 


More information about the igt-dev mailing list