RE: [PATCH] drm/i915/watermark: Check bounds for scaler_users for dsc prefill latency

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@xxxxxxxxx>
> Sent: 27 February 2025 09:11
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Cc: intel-xe@xxxxxxxxxxxxxxxxxxxxx; jani.nikula@xxxxxxxxxxxxxxx; Golani,
> Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@xxxxxxxxx>; Nautiyal,
> Ankit K <ankit.k.nautiyal@xxxxxxxxx>
> Subject: [PATCH] drm/i915/watermark: Check bounds for scaler_users for
> dsc prefill latency
> 
> Currently, during the computation of global watermarks, the latency for each
> scaler user is calculated to compute the DSC prefill latency.
> At this point, the number of scaler users can exceed the number of
> supported scalers, which is checked later in intel_atomic_setup_scalers().
> 
> This can cause issues when the number of scaler users exceeds the number
> of supported scalers.
> 
> While checking for DSC prefill, ensure that the number of scaler users does
> not exceed the number of supported scalers.
> 
> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4341
> Fixes: a9b14af999b0 ("drm/i915/dsc: Check if vblank is sufficient for dsc
> prefill")
> Cc: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
> Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
> ---
>  drivers/gpu/drm/i915/display/skl_watermark.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c
> b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 10a1daad28eb..58b91981e400 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2314,6 +2314,7 @@ cdclk_prefill_adjustment(const struct
> intel_crtc_state *crtc_state)  static int  dsc_prefill_latency(const struct
> intel_crtc_state *crtc_state)  {
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	const struct intel_crtc_scaler_state *scaler_state =
>  					&crtc_state->scaler_state;
>  	int linetime = DIV_ROUND_UP(1000 * crtc_state-
> >hw.adjusted_mode.htotal,
> @@ -2323,7 +2324,9 @@ dsc_prefill_latency(const struct intel_crtc_state
> *crtc_state)
>  		crtc_state->output_format ==
> INTEL_OUTPUT_FORMAT_YCBCR420 ? 2 : 1;
>  	u32 dsc_prefill_latency = 0;
> 
> -	if (!crtc_state->dsc.compression_enable || !num_scaler_users)
> +	if (!crtc_state->dsc.compression_enable ||
> +	    !num_scaler_users ||
> +	    num_scaler_users > crtc->num_scalers)

Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx>

>  		return dsc_prefill_latency;
> 
>  	dsc_prefill_latency = DIV_ROUND_UP(15 * linetime *
> chroma_downscaling_factor, 10);
> --
> 2.45.2





[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux