[Intel-gfx] [PATCH 04/12] drm/i915: Extract PDE writes

Jesse Barnes jbarnes at virtuousgeek.org
Thu May 2 23:27:41 CEST 2013


On Tue, 23 Apr 2013 23:15:32 -0700
Ben Widawsky <ben at bwidawsk.net> wrote:

> It also makes some sense IMO to have these two functions separate
> irrespective of the number of callers.
> 
> Only the single caller for now, but that will change as we add more
> PPGTTs.
> 
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 22 +++++++++++++++-------
>  1 file changed, 15 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 11a50cf..975adaa 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -76,18 +76,13 @@ static inline gen6_gtt_pte_t gen6_pte_encode(struct drm_device *dev,
>  	return pte;
>  }
>  
> -static int gen6_ppgtt_enable(struct drm_device *dev)
> +static void gen6_write_pdes(struct i915_hw_ppgtt *ppgtt)
>  {
> -	drm_i915_private_t *dev_priv = dev->dev_private;
> -	uint32_t pd_offset;
> -	struct intel_ring_buffer *ring;
> -	struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
> +	struct drm_i915_private *dev_priv = ppgtt->dev->dev_private;
>  	gen6_gtt_pte_t __iomem *pd_addr;
>  	uint32_t pd_entry;
>  	int i;
>  
> -	BUG_ON(ppgtt->pd_offset & 0x3f);
> -
>  	pd_addr = (gen6_gtt_pte_t __iomem*)dev_priv->gtt.gsm +
>  		ppgtt->pd_offset / sizeof(gen6_gtt_pte_t);
>  	for (i = 0; i < ppgtt->num_pd_entries; i++) {
> @@ -100,6 +95,19 @@ static int gen6_ppgtt_enable(struct drm_device *dev)
>  		writel(pd_entry, pd_addr + i);
>  	}
>  	readl(pd_addr);
> +}
> +
> +static int gen6_ppgtt_enable(struct drm_device *dev)
> +{
> +	drm_i915_private_t *dev_priv = dev->dev_private;
> +	uint32_t pd_offset;
> +	struct intel_ring_buffer *ring;
> +	struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
> +	int i;
> +
> +	BUG_ON(ppgtt->pd_offset & 0x3f);
> +
> +	gen6_write_pdes(ppgtt);
>  
>  	pd_offset = ppgtt->pd_offset;
>  	pd_offset /= 64; /* in cachelines, */

Yep, looks nicer this way.

Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list