On Fri, 03 Jan 2025, Ankit Nautiyal <[email protected]> wrote:
> Currently, when bandwidth is insufficient for a given mode, we attempt
> to use DSC. This is indicated by a debug print, followed by a check for
> DSC support.
>
> The debug message states that we are trying DSC, but DSC might not be
> supported, which can give an incorrect picture in the logs if we bail
> out later.
>
> Correct the order for both DP and DP MST to:
> - Check if DSC is required and supported, and return early if DSC is
> not supported.
> - Print a debug message to indicate that DSC will be tried next.
>
> Suggested-by: Jani Nikula <[email protected]>
> Signed-off-by: Ankit Nautiyal <[email protected]>

Reviewed-by: Jani Nikula <[email protected]>

> ---
>  drivers/gpu/drm/i915/display/intel_dp.c     | 8 +++++---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 7 +++++--
>  2 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 0d74adae2ec9..4fa0e0b675b0 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2642,15 +2642,17 @@ intel_dp_compute_link_config(struct intel_encoder 
> *encoder,
>                       dsc_needed = true;
>       }
>  
> +     if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, 
> pipe_config)) {
> +             drm_dbg_kms(display->drm, "DSC required but not available\n");
> +             return -EINVAL;
> +     }
> +
>       if (dsc_needed) {
>               drm_dbg_kms(display->drm,
>                           "Try DSC (fallback=%s, joiner=%s, force=%s)\n",
>                           str_yes_no(ret), str_yes_no(joiner_needs_dsc),
>                           str_yes_no(intel_dp->force_dsc_en));
>  
> -             if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> -                     return -EINVAL;
> -
>               if (!intel_dp_compute_config_limits(intel_dp, pipe_config,
>                                                   respect_downstream_limits,
>                                                   true,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c 
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index fffd199999e0..0433f2ff77e1 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -633,14 +633,17 @@ static int mst_stream_compute_config(struct 
> intel_encoder *encoder,
>                       dsc_needed = true;
>       }
>  
> +     if (dsc_needed && !intel_dp_supports_dsc(intel_dp, connector, 
> pipe_config)) {
> +             drm_dbg_kms(display->drm, "DSC required but not available\n");
> +             return -EINVAL;
> +     }
> +
>       /* enable compression if the mode doesn't fit available BW */
>       if (dsc_needed) {
>               drm_dbg_kms(display->drm, "Try DSC (fallback=%s, joiner=%s, 
> force=%s)\n",
>                           str_yes_no(ret), str_yes_no(joiner_needs_dsc),
>                           str_yes_no(intel_dp->force_dsc_en));
>  
> -             if (!intel_dp_supports_dsc(intel_dp, connector, pipe_config))
> -                     return -EINVAL;
>  
>               if (!mst_stream_compute_config_limits(intel_dp, connector,
>                                                     pipe_config, true,

-- 
Jani Nikula, Intel

Reply via email to