[PATCH 5/8] drm/i915/tc: Remove ref held check from aux power well enabled and disable functions

Imre Deak imre.deak at intel.com
Mon Apr 6 11:43:37 UTC 2020


On Fri, Apr 03, 2020 at 07:39:29PM -0700, José Roberto de Souza wrote:
> As part of the TC cold exit sequences we need to request aux power
> well before lock the access to TC ports.
> So removing it to prevent warnings.

We still need the check (for DP-alt/TBT exclusion), just bypass the
check for dig_port->is_legacy where it doesn't matter much anyway.

> 
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> ---
>  .../drm/i915/display/intel_display_power.c    | 56 +------------------
>  drivers/gpu/drm/i915/display/intel_tc.c       |  6 --
>  drivers/gpu/drm/i915/display/intel_tc.h       |  1 -
>  3 files changed, 1 insertion(+), 62 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 76ec83e489fc..13f92f485225 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -533,46 +533,6 @@ aux_ch_to_digital_port(struct drm_i915_private *dev_priv,
>  	return dig_port;
>  }
>  
> -#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
> -
> -static u64 async_put_domains_mask(struct i915_power_domains *power_domains);
> -
> -static int power_well_async_ref_count(struct drm_i915_private *dev_priv,
> -				      struct i915_power_well *power_well)
> -{
> -	int refs = hweight64(power_well->desc->domains &
> -			     async_put_domains_mask(&dev_priv->power_domains));
> -
> -	drm_WARN_ON(&dev_priv->drm, refs > power_well->count);
> -
> -	return refs;
> -}
> -
> -static void icl_tc_port_assert_ref_held(struct drm_i915_private *dev_priv,
> -					struct i915_power_well *power_well,
> -					struct intel_digital_port *dig_port)
> -{
> -	/* Bypass the check if all references are released asynchronously */
> -	if (power_well_async_ref_count(dev_priv, power_well) ==
> -	    power_well->count)
> -		return;
> -
> -	if (drm_WARN_ON(&dev_priv->drm, !dig_port))
> -		return;
> -
> -	drm_WARN_ON(&dev_priv->drm, !intel_tc_port_ref_held(dig_port));
> -}
> -
> -#else
> -
> -static void icl_tc_port_assert_ref_held(struct drm_i915_private *dev_priv,
> -					struct i915_power_well *power_well,
> -					struct intel_digital_port *dig_port)
> -{
> -}
> -
> -#endif
> -
>  #define TGL_AUX_PW_TO_TC_PORT(pw_idx)	((pw_idx) - TGL_PW_CTL_IDX_AUX_TC1)
>  
>  static void icl_tc_cold_exit(struct drm_i915_private *i915)
> @@ -602,8 +562,6 @@ icl_tc_phy_aux_power_well_enable(struct drm_i915_private *dev_priv,
>  	struct intel_digital_port *dig_port = aux_ch_to_digital_port(dev_priv, aux_ch);
>  	u32 val;
>  
> -	icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
> -
>  	val = intel_de_read(dev_priv, DP_AUX_CH_CTL(aux_ch));
>  	val &= ~DP_AUX_CH_CTL_TBT_IO;
>  	if (power_well->desc->hsw.is_tc_tbt)
> @@ -631,18 +589,6 @@ icl_tc_phy_aux_power_well_enable(struct drm_i915_private *dev_priv,
>  	}
>  }
>  
> -static void
> -icl_tc_phy_aux_power_well_disable(struct drm_i915_private *dev_priv,
> -				  struct i915_power_well *power_well)
> -{
> -	enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> -	struct intel_digital_port *dig_port = aux_ch_to_digital_port(dev_priv, aux_ch);
> -
> -	icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
> -
> -	hsw_power_well_disable(dev_priv, power_well);
> -}
> -
>  /*
>   * We should only use the power well if we explicitly asked the hardware to
>   * enable it, so check if it's enabled and also check if we've requested it to
> @@ -3563,7 +3509,7 @@ static const struct i915_power_well_ops icl_combo_phy_aux_power_well_ops = {
>  static const struct i915_power_well_ops icl_tc_phy_aux_power_well_ops = {
>  	.sync_hw = hsw_power_well_sync_hw,
>  	.enable = icl_tc_phy_aux_power_well_enable,
> -	.disable = icl_tc_phy_aux_power_well_disable,
> +	.disable = hsw_power_well_disable,
>  	.is_enabled = hsw_power_well_enabled,
>  };
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c
> index 7a802875da56..c8885142c7d3 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.c
> +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> @@ -569,12 +569,6 @@ void intel_tc_port_unlock(struct intel_digital_port *dig_port)
>  	intel_display_power_put_async(i915, POWER_DOMAIN_DISPLAY_CORE, wakeref);
>  }
>  
> -bool intel_tc_port_ref_held(struct intel_digital_port *dig_port)
> -{
> -	return mutex_is_locked(&dig_port->tc_lock) ||
> -	       dig_port->tc_link_refcount;
> -}
> -
>  void intel_tc_port_get_link(struct intel_digital_port *dig_port,
>  			    int required_lanes)
>  {
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.h b/drivers/gpu/drm/i915/display/intel_tc.h
> index 70cc494daa7b..f964048c6fd2 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.h
> +++ b/drivers/gpu/drm/i915/display/intel_tc.h
> @@ -25,7 +25,6 @@ void intel_tc_port_unlock(struct intel_digital_port *dig_port);
>  void intel_tc_port_get_link(struct intel_digital_port *dig_port,
>  			    int required_lanes);
>  void intel_tc_port_put_link(struct intel_digital_port *dig_port);
> -bool intel_tc_port_ref_held(struct intel_digital_port *dig_port);
>  
>  void intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy);
>  
> -- 
> 2.26.0
> 
> _______________________________________________
> Intel-gfx-trybot mailing list
> Intel-gfx-trybot at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx-trybot


More information about the Intel-gfx-trybot mailing list