[Intel-xe] [PATCH 1/2] drm/xe: Better error messages for xe_gt_record_default_lrcs

Matt Roper matthew.d.roper at intel.com
Tue Mar 28 20:14:12 UTC 2023


On Tue, Mar 28, 2023 at 12:58:21PM -0700, Matthew Brost wrote:
> Add some error messages describing the problem when
> xe_gt_record_default_lrcs fails.

You could potentially use hwe->name instead of the class and instance
fields, but in general

Reviewed-by: Matt Roper <matthew.d.roper at intel.com>

I've been using a pretty similar patch locally and I've found the errors
for gitlab#232 to usually happen during emit_wa_job on one of the later
engines on the engine list (but not always on the same engine each
time).


Matt

> 
> Signed-off-by: Matthew Brost <matthew.brost at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_gt.c | 23 ++++++++++++++++++++---
>  1 file changed, 20 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 6322e0689a9e..724ba2be5d3d 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -23,6 +23,7 @@
>  #include "xe_gt_sysfs.h"
>  #include "xe_gt_tlb_invalidation.h"
>  #include "xe_gt_topology.h"
> +#include "xe_guc_engine_types.h"
>  #include "xe_hw_fence.h"
>  #include "xe_irq.h"
>  #include "xe_lrc.h"
> @@ -257,30 +258,46 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
>  				     hwe, ENGINE_FLAG_WA);
>  		if (IS_ERR(e)) {
>  			err = PTR_ERR(e);
> +			drm_err(&xe->drm, "gt%d, hwe %d:%d, xe_engine_create,e failed=%d",
> +				gt->info.id, hwe->class, hwe->instance, err);
>  			goto put_vm;
>  		}
>  
>  		/* Prime golden LRC with known good state */
>  		err = emit_wa_job(gt, e);
> -		if (err)
> +		if (err) {
> +			drm_err(&xe->drm, "gt%d, hwe %d:%d, guc_id=%d, emit_wa_job,e failed=%d",
> +				gt->info.id, hwe->class, hwe->instance,
> +				e->guc->id, err);
>  			goto put_engine;
> +		}
>  
>  		nop_e = xe_engine_create(xe, vm, BIT(hwe->logical_instance),
>  					 1, hwe, ENGINE_FLAG_WA);
>  		if (IS_ERR(nop_e)) {
>  			err = PTR_ERR(nop_e);
> +			drm_err(&xe->drm, "gt%d, hwe %d:%d, xe_engine_create,nop_e failed=%d",
> +				gt->info.id, hwe->class, hwe->instance, err);
>  			goto put_engine;
>  		}
>  
>  		/* Switch to different LRC */
>  		err = emit_nop_job(gt, nop_e);
> -		if (err)
> +		if (err) {
> +			drm_err(&xe->drm, "gt%d, hwe %d:%d, guc_id=%d, emit_nop_job,nop_e failed=%d",
> +				gt->info.id, hwe->class, hwe->instance,
> +				nop_e->guc->id, err);
>  			goto put_nop_e;
> +		}
>  
>  		/* Reload golden LRC to record the effect of any indirect W/A */
>  		err = emit_nop_job(gt, e);
> -		if (err)
> +		if (err) {
> +			drm_err(&xe->drm, "gt%d, hwe %d:%d, guc_id=%d, emit_nop_job,e failed=%d",
> +				gt->info.id, hwe->class, hwe->instance,
> +				e->guc->id, err);
>  			goto put_nop_e;
> +		}
>  
>  		xe_map_memcpy_from(xe, default_lrc,
>  				   &e->lrc[0].bo->vmap,
> -- 
> 2.34.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation


More information about the Intel-xe mailing list