[Intel-gfx] [PATCH 2/8] drm/i915: Nuke 'realloc_pipes'

Lisovskiy, Stanislav stanislav.lisovskiy at intel.com
Wed Oct 16 14:27:05 UTC 2019


On Fri, 2019-10-11 at 23:09 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> The 'realloc_pipes' bitmask is pointless. It is either:
> a) the set of pipes which are already part of the state,
>    in which case adding them again is entirely redundant
> b) the set of all pipes which we then add to the state
> 
> Also the fact that 'realloc_pipes' uses the crtc indexes is
> going to bite is at some point so best get rid of it quick.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy at intel.com>

> ---
>  drivers/gpu/drm/i915/intel_pm.c | 50 ++++++++++++++-----------------
> --
>  1 file changed, 21 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c
> b/drivers/gpu/drm/i915/intel_pm.c
> index 49568270a89d..3536c2e975e7 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -5235,19 +5235,6 @@ bool skl_ddb_allocation_overlaps(const struct
> skl_ddb_entry *ddb,
>  	return false;
>  }
>  
> -static u32
> -pipes_modified(struct intel_atomic_state *state)
> -{
> -	struct intel_crtc *crtc;
> -	struct intel_crtc_state *crtc_state;
> -	u32 i, ret = 0;
> -
> -	for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i)
> -		ret |= drm_crtc_mask(&crtc->base);
> -
> -	return ret;
> -}
> -
>  static int
>  skl_ddb_add_affected_planes(const struct intel_crtc_state
> *old_crtc_state,
>  			    struct intel_crtc_state *new_crtc_state)
> @@ -5423,14 +5410,26 @@ skl_print_wm_changes(struct
> intel_atomic_state *state)
>  	}
>  }
>  
> +static int intel_add_all_pipes(struct intel_atomic_state *state)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> +	struct intel_crtc *crtc;
> +
> +	for_each_intel_crtc(&dev_priv->drm, crtc) {
> +		struct intel_crtc_state *crtc_state;
> +
> +		crtc_state = intel_atomic_get_crtc_state(&state->base,
> crtc);
> +		if (IS_ERR(crtc_state))
> +			return PTR_ERR(crtc_state);
> +	}
> +
> +	return 0;
> +}
> +
>  static int
>  skl_ddb_add_affected_pipes(struct intel_atomic_state *state)
>  {
> -	struct drm_device *dev = state->base.dev;
> -	const struct drm_i915_private *dev_priv = to_i915(dev);
> -	struct intel_crtc *crtc;
> -	struct intel_crtc_state *crtc_state;
> -	u32 realloc_pipes = pipes_modified(state);
> +	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
>  	int ret;
>  
>  	/*
> @@ -5440,7 +5439,7 @@ skl_ddb_add_affected_pipes(struct
> intel_atomic_state *state)
>  	 * ensure a full DDB recompute.
>  	 */
>  	if (dev_priv->wm.distrust_bios_wm) {
> -		ret = drm_modeset_lock(&dev-
> >mode_config.connection_mutex,
> +		ret = drm_modeset_lock(&dev_priv-
> >drm.mode_config.connection_mutex,
>  				       state->base.acquire_ctx);
>  		if (ret)
>  			return ret;
> @@ -5471,18 +5470,11 @@ skl_ddb_add_affected_pipes(struct
> intel_atomic_state *state)
>  	 * to grab the lock on *all* CRTC's.
>  	 */
>  	if (state->active_pipe_changes || state->modeset) {
> -		realloc_pipes = ~0;
>  		state->wm_results.dirty_pipes = ~0;
> -	}
>  
> -	/*
> -	 * We're not recomputing for the pipes not included in the
> commit, so
> -	 * make sure we start with the current state.
> -	 */
> -	for_each_intel_crtc_mask(dev, crtc, realloc_pipes) {
> -		crtc_state = intel_atomic_get_crtc_state(&state->base,
> crtc);
> -		if (IS_ERR(crtc_state))
> -			return PTR_ERR(crtc_state);
> +		ret = intel_add_all_pipes(state);
> +		if (ret)
> +			return ret;
>  	}
>  
>  	return 0;


More information about the Intel-gfx mailing list