Good catch, both patches are:

Reviewed-by: Iago Toral Quiroga <[email protected]>

El dom, 01-11-2026 a las 09:53 -0300, Maíra Canal escribió:
> From: Jose Maria Casanova Crespo <[email protected]>
> 
> v3d_csd_job_timedout() decides whether a compute job made progress by
> comparing CSD_CURRENT_CFG4, the number of batches the dispatcher
> still
> has to start, against the value saved at the previous timeout. That
> saved value is never initialized, so it is zero on the first timeout.
> 
> On V3D 7.1.6 and later, CFG4 counts down to zero once the dispatcher
> has
> started the last batch, but the dispatch keeps running until the
> batches
> in flight complete. If the first timeout fires in that window, the
> handler sees no change and resets the GPU while the job is about to
> complete. For example, this happens with long dispatches that only
> keep a
> single supergroup in flight.
> 
> Initialize timedout_batches to the value programmed in CFG4 when the
> job
> is started. The register does not return to it once a batch has
> started:
> it counts down to zero on V3D 7.1.6 and later (CFG4 holds the number
> of
> batches), and to 0xffffffff on V3D 4.2 (CFG4 holds the number of
> batches
> minus one).
> 
> Cc: [email protected]
> Fixes: d223f98f0209 ("drm/v3d: Add support for compute shader
> dispatch.")
> Signed-off-by: Jose Maria Casanova Crespo <[email protected]>
> Signed-off-by: Maíra Canal <[email protected]>
> ---
>  drivers/gpu/drm/v3d/v3d_sched.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c
> b/drivers/gpu/drm/v3d/v3d_sched.c
> index e6283a75bcdf..002116efc874 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -360,6 +360,8 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)
>               dma_fence_put(job->base.irq_fence);
>       job->base.irq_fence = dma_fence_get(fence);
>  
> +     job->timedout_batches = job->args.cfg[4];
> +
>       trace_v3d_submit_csd(dev, to_v3d_fence(fence)->seqno);
>  
>       v3d_job_start_stats(&job->base);

Reply via email to