On Fri, 2025-09-05 at 17:58 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> If WM0 latency is zero we need to bump it (and the WM1+ latencies)
> but a fixed amount. But any WM1+ level with zero latency must
> not be touched since that indicates that corresponding WM level
> isn't supported.
> 
> Currently the loop doing that adjustment does work, but only because
> the previous loop modified the num_levels used as the loop boundary.
> This all seems a bit too fragile. Remove the num_levels adjustment
> and instead adjust the read latency loop to abort when it encounters
> a zero latency value.
> 
> Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coe...@intel.com>

--
Cheers,
Luca.


>  drivers/gpu/drm/i915/display/skl_watermark.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c 
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 8c434bc96971..805481c92154 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3198,8 +3198,6 @@ adjust_wm_latency(struct intel_display *display,
>               if (wm[level] == 0) {
>                       for (i = level + 1; i < num_levels; i++)
>                               wm[i] = 0;
> -
> -                     num_levels = level;
>                       break;
>               }
>       }
> @@ -3212,8 +3210,14 @@ adjust_wm_latency(struct intel_display *display,
>        * from the punit when level 0 response data is 0us.
>        */
>       if (wm[0] == 0) {
> -             for (level = 0; level < num_levels; level++)
> +             wm[0] += read_latency;
> +
> +             for (level = 1; level < num_levels; level++) {
> +                     if (wm[level] == 0)
> +                             break;
> +
>                       wm[level] += read_latency;
> +             }
>       }
>  
>       /*

Reply via email to