[Intel-gfx] [PATCH 1/4] drm/i915: Remove locks around skl+ scaler programming

Lisovskiy, Stanislav stanislav.lisovskiy at intel.com
Tue Mar 29 09:28:17 UTC 2022


On Thu, Feb 24, 2022 at 06:51:00PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> All the skl+ scaler registers are suitably confined to their own
> cachelines so we don't need the uncore.lock to globally serialize
> access to these registers. We actually already dropped some of this
> in commit 14ad15296d1f ("drm/i915: Make skl+ universal plane
> registers unlocked") as the plane scaler enabling/reconfiguration
> became lockless. So let's complete that and remove the rest of
> the locks from the scaler programming as well.
> 
> 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/display/skl_scaler.c | 10 ----------
>  1 file changed, 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
> index c2e94118566b..ac67e9fbb713 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -412,7 +412,6 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  	int x = dst->x1;
>  	int y = dst->y1;
>  	int hscale, vscale;
> -	unsigned long irqflags;
>  	int id;
>  	u32 ps_ctrl;
>  
> @@ -434,8 +433,6 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  	ps_ctrl = skl_scaler_get_filter_select(crtc_state->hw.scaling_filter, 0);
>  	ps_ctrl |=  PS_SCALER_EN | scaler_state->scalers[id].mode;
>  
> -	spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
> -
>  	skl_scaler_setup_filter(dev_priv, pipe, id, 0,
>  				crtc_state->hw.scaling_filter);
>  
> @@ -449,8 +446,6 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  			  x << 16 | y);
>  	intel_de_write_fw(dev_priv, SKL_PS_WIN_SZ(pipe, id),
>  			  width << 16 | height);
> -
> -	spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
>  }
>  
>  void
> @@ -519,15 +514,10 @@ static void skl_detach_scaler(struct intel_crtc *crtc, int id)
>  {
>  	struct drm_device *dev = crtc->base.dev;
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> -	unsigned long irqflags;
> -
> -	spin_lock_irqsave(&dev_priv->uncore.lock, irqflags);
>  
>  	intel_de_write_fw(dev_priv, SKL_PS_CTRL(crtc->pipe, id), 0);
>  	intel_de_write_fw(dev_priv, SKL_PS_WIN_POS(crtc->pipe, id), 0);
>  	intel_de_write_fw(dev_priv, SKL_PS_WIN_SZ(crtc->pipe, id), 0);
> -
> -	spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
>  }
>  
>  /*
> -- 
> 2.34.1
> 


More information about the Intel-gfx mailing list