On Sun, Jul 26, 2026 at 10:57 AM <[email protected]> wrote:
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
> to consider:
> - [Medium] The preemption timeout calculation fails to account for the 
> hangcheck progress multiplier, causing premature job termination for 
> long-running jobs.
> --
>
> --- Patch [1]: [PATCH] drm/msm: Preemption timeout should be greater than 
> hangcheck ---
> commit 5454ddf4018869efeec2d7c8f2767056ad2612d9
> Author: Rob Clark <[email protected]>
>
> drm/msm: Preemption timeout should be greater than hangcheck
>
> This commit changes the preemption timeout from a hard-coded 10 seconds to
> the maximum of 10 seconds and the configured hangcheck period. This is
> intended to prevent the preemption timer from prematurely killing
> long-running jobs that are otherwise compliant with the hangcheck timeout.
>
> > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_preempt.h 
> > b/drivers/gpu/drm/msm/adreno/a6xx_preempt.h
> > index df36c945b836b..178017aad26e6 100644
> > --- a/drivers/gpu/drm/msm/adreno/a6xx_preempt.h
> > +++ b/drivers/gpu/drm/msm/adreno/a6xx_preempt.h
> > @@ -35,6 +35,14 @@ static inline void set_preempt_state(struct a6xx_gpu 
> > *gpu,
> >       smp_mb__after_atomic();
> >  }
> >
> > +static inline void set_preempt_timer(struct a6xx_gpu *gpu)
> > +{
> > +     struct msm_drm_private *priv = gpu->base.base.dev->dev_private;
> > +     unsigned t = max(10000, priv->hangcheck_period);
>
> [Severity: Medium]
> Will this under-calculate the true hangcheck timeout when progress detection
> is enabled?
>
> According to msm_ringbuffer.h, when progress detection is enabled, the
> hangcheck timer duration is halved and allows up to
> DRM_MSM_HANGCHECK_PROGRESS_RETRIES extra cycles.
>
> If a user sets a large hangcheck period via debugfs to allow for long
> compute shaders, wouldn't using priv->hangcheck_period directly here result
> in a preemption timeout that is shorter than the actual allowed hangcheck
> time, potentially still killing the job prematurely?
>

yes, but the progress detection is based on detecting that the CP
advanced, which won't be the case for long running compute shaders

BR,
-R

> > +
> > +     mod_timer(&gpu->preempt_timer, jiffies + msecs_to_jiffies(t));
> > +}
> > +
> >  /* Write the most recent wptr for the given ring into the hardware */
> >  static inline void update_wptr(struct a6xx_gpu *a6xx_gpu, struct 
> > msm_ringbuffer *ring)
> >  {
>
> --
> Sashiko AI review · 
> https://sashiko.dev/#/patchset/[email protected]?part=1

Reply via email to