On Fri, 03 Jan 2025, Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx> 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 <jani.nikula@xxxxxxxxxxxxxxx> > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx> Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > 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