[PATCH 2/3] drm/xe: Add a parameter to xe_bb_create_job() to append or not batch buffer end instruction

Souza, Jose jose.souza at intel.com
Thu Sep 12 15:39:19 UTC 2024


On Wed, 2024-09-11 at 19:13 -0700, Dixit, Ashutosh wrote:
> On Wed, 11 Sep 2024 13:02:17 -0700, José Roberto de Souza wrote:
> > 
> 
> Hi Jose,
> 
> > There is overflow happening in OA because it reuses batch buffers,
> > so at each submission one batch buffer end instruction is appended
> > eventually causing a overflow.
> > That will be fixed in the next patch, here just adding adding
> > parameter and updating all the callers.
> 
> Thanks for finding this, this is indeed a bug.
> 
> However I have a much simpler fix, which is just the patch below (instead
> of your two patches):
> 
> diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c
> index a13e0b3a169ed..148ccae265b47 100644
> --- a/drivers/gpu/drm/xe/xe_bb.c
> +++ b/drivers/gpu/drm/xe/xe_bb.c
> @@ -65,7 +65,8 @@ __xe_bb_create_job(struct xe_exec_queue *q, struct xe_bb *bb, u64 *addr)
>  {
>  	u32 size = drm_suballoc_size(bb->bo);
>  
> -	bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
> +	if (bb->cs[bb->len] != MI_BATCH_BUFFER_END)
> +		bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
>  
>  	xe_gt_assert(q->gt, bb->len * 4 + bb_prefetch(q->gt) <= size);
> 
> So just append MI_BATCH_BUFFER_END if it is not already there. Also,
> MI_BATCH_BUFFER_END can be added by the caller, otherwise the callee will
> add that. Thoughts?

good idea, send v2 with some minor changes

> 
> Please send this patch if you agree, I'll R-b it.
> 
> Thanks.
> --
> Ashutosh



More information about the Intel-xe mailing list