diff mbox series

drm/i915/dp: Return early if dsc is required but not supported

Message ID 20250103031424.1732774-1-ankit.k.nautiyal@intel.com (mailing list archive)
State New
Headers show
Series drm/i915/dp: Return early if dsc is required but not supported | expand

Commit Message

Nautiyal, Ankit K Jan. 3, 2025, 3:14 a.m. UTC
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@linux.intel.com>
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 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(-)

Comments

Kandpal, Suraj Jan. 3, 2025, 5:34 a.m. UTC | #1
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: Friday, January 3, 2025 8:44 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: intel-xe@lists.freedesktop.org; jani.nikula@linux.intel.com; Deak, Imre
> <imre.deak@intel.com>
> Subject: [PATCH] drm/i915/dp: Return early if dsc is required but not
> supported
> 
> 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@linux.intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> ---
>  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,
> --
> 2.45.2
Jani Nikula Jan. 3, 2025, 10:03 a.m. UTC | #2
On Fri, 03 Jan 2025, Ankit Nautiyal <ankit.k.nautiyal@intel.com> 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@linux.intel.com>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  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,
diff mbox series

Patch

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,