[v2] drm/i915: Restore correct bxt_ddi_phy_calc_lane_lat_optim_mask() calculation

Submitted by Ville Syrjälä on April 11, 2019, 4:49 p.m.

Details

Message ID 20190411164925.28491-1-ville.syrjala@linux.intel.com
State Accepted
Commit f5c58ba18ab8ea2169670ed880e4d31ed772ad10
Headers show
Series "drm/i915: Don't call bxt_ddi_phy_calc_lane_lat_optim_mask() after failing intel_dp_compute_config()" ( rev: 2 ) in Intel GFX

Commit Message

Ville Syrjälä April 11, 2019, 4:49 p.m.
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

We are no longer calling bxt_ddi_phy_calc_lane_lat_optim_mask() when
intel{hdmi,dp}_compute_config() succeeds, and instead only call it
when those fail. This is fallout from the bool->int
.compute_config() conversion which failed to invert the return
value check before calling bxt_ddi_phy_calc_lane_lat_optim_mask().
Let's just replace it with an early bailout so that it's harder
to miss.

This restores the correct latency optim setting calculation
(which could fix some real failures), and avoids the
MISSING_CASE() from bxt_ddi_phy_calc_lane_lat_optim_mask()
after intel{hdmi,dp}_compute_config() has failed.

Cc: Lyude Paul <lyude@redhat.com>
Fixes: 204474a6b859 ("drm/i915: Pass down rc in intel_encoder->compute_config()")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109373
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 3ae55274056c..24f9106efcc6 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -3857,14 +3857,16 @@  static int intel_ddi_compute_config(struct intel_encoder *encoder,
 		ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state);
 	else
 		ret = intel_dp_compute_config(encoder, pipe_config, conn_state);
+	if (ret)
+		return ret;
 
-	if (IS_GEN9_LP(dev_priv) && ret)
+	if (IS_GEN9_LP(dev_priv))
 		pipe_config->lane_lat_optim_mask =
 			bxt_ddi_phy_calc_lane_lat_optim_mask(pipe_config->lane_count);
 
 	intel_ddi_compute_min_voltage_level(dev_priv, pipe_config);
 
-	return ret;
+	return 0;
 
 }
 

Comments

On Thu, Apr 11, 2019 at 07:49:25PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> We are no longer calling bxt_ddi_phy_calc_lane_lat_optim_mask() when
> intel{hdmi,dp}_compute_config() succeeds, and instead only call it
> when those fail. This is fallout from the bool->int
> .compute_config() conversion which failed to invert the return
> value check before calling bxt_ddi_phy_calc_lane_lat_optim_mask().
> Let's just replace it with an early bailout so that it's harder
> to miss.
> 
> This restores the correct latency optim setting calculation
> (which could fix some real failures), and avoids the
> MISSING_CASE() from bxt_ddi_phy_calc_lane_lat_optim_mask()
> after intel{hdmi,dp}_compute_config() has failed.
> 
> Cc: Lyude Paul <lyude@redhat.com>
> Fixes: 204474a6b859 ("drm/i915: Pass down rc in intel_encoder->compute_config()")
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109373
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Pushed with Lyude's irc rb.
19:53 < vsyrjala> Lyude: https://patchwork.freedesktop.org/patch/298091/?series=59351&rev=2
20:01 < Lyude> vsyrjala: whoops, thanks for catching that: Reviewed-by: Lyude Paul <lyude@redhat.com>

> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 3ae55274056c..24f9106efcc6 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -3857,14 +3857,16 @@ static int intel_ddi_compute_config(struct intel_encoder *encoder,
>  		ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state);
>  	else
>  		ret = intel_dp_compute_config(encoder, pipe_config, conn_state);
> +	if (ret)
> +		return ret;
>  
> -	if (IS_GEN9_LP(dev_priv) && ret)
> +	if (IS_GEN9_LP(dev_priv))
>  		pipe_config->lane_lat_optim_mask =
>  			bxt_ddi_phy_calc_lane_lat_optim_mask(pipe_config->lane_count);
>  
>  	intel_ddi_compute_min_voltage_level(dev_priv, pipe_config);
>  
> -	return ret;
> +	return 0;
>  
>  }
>  
> -- 
> 2.21.0