[Intel-gfx] [PATCH 1/4] drm/i915/guc: add doorbell map to debugfs/i915_guc_info

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Wed Jun 8 12:32:56 UTC 2016


On 08/06/16 11:55, Dave Gordon wrote:
> To properly verify the driver->doorbell->GuC functionality, validation
> needs to know how the driver has assigned the doorbell cache lines and
> registers, so make them visible through debugfs.
>
> Signed-off-by: Dave Gordon <david.s.gordon at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_debugfs.c | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index e4f2c55..fbb4b16 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -2560,6 +2560,7 @@ static int i915_guc_info(struct seq_file *m, void *data)
>   	struct i915_guc_client client = {};
>   	struct intel_engine_cs *engine;
>   	u64 total = 0;
> +	int i;
>
>   	if (!HAS_GUC_SCHED(dev_priv))
>   		return 0;
> @@ -2574,6 +2575,14 @@ static int i915_guc_info(struct seq_file *m, void *data)
>
>   	mutex_unlock(&dev->struct_mutex);
>
> +	seq_printf(m, "Doorbell map:\n");
> +	BUILD_BUG_ON(ARRAY_SIZE(guc.doorbell_bitmap) % 4);
> +	for (i = 0; i < ARRAY_SIZE(guc.doorbell_bitmap) - 3; i += 4)
> +		seq_printf(m, "\t%016lx %016lx %016lx %016lx\n",

Bitmap is unsigned long so 32-bit or 64-bit depending on the kernel 
build. Which makes the format wrong for 32-bit. And the ARRAY_SIZE will 
be different as well. So I think output should be made consistent 
between the two. Probably either pick u32 or u64 and dump it like that.

#define DECLARE_BITMAP(name,bits) \
         unsigned long name[BITS_TO_LONGS(bits)]

  DECLARE_BITMAP(doorbell_bitmap, GUC_MAX_DOORBELLS);

> +			guc.doorbell_bitmap[i], guc.doorbell_bitmap[i+1],
> +			guc.doorbell_bitmap[i+2], guc.doorbell_bitmap[i+3]);
> +	seq_printf(m, "Doorbell next cacheline: 0x%x\n\n", guc.db_cacheline);
> +
>   	seq_printf(m, "GuC total action count: %llu\n", guc.action_count);
>   	seq_printf(m, "GuC action failure count: %u\n", guc.action_fail);
>   	seq_printf(m, "GuC last action command: 0x%x\n", guc.action_cmd);
>

Regards,

Tvrtko


More information about the Intel-gfx mailing list