On Thu, Jun 27, 2013 at 04:30:25PM -0700, Ben Widawsky wrote:
> for file in `ls drivers/gpu/drm/i915/*.c` ; do
>       sed -i "s/mm.aliasing/gtt.aliasing/" $file;
> done

Commit message should explain _why_ we do something. Again I'm asking
since I'm unclear about how things fit all together and what the different
responsibilities are. I think I understand your design here to make both
real ppgtt work and keep aliasing ppgtt going, but I'd like you to explain
this in your words ;-)

One thing which looks a bit peculiar at the end is that struct
i915_hw_ppgtt is actually used as the real ppgtt object (since it
subclases i915_address space). My original plan was that we'll add a new
struct i915_ppgtt {
        struct i915_address_space base;
        struct i915_hw_ppgtt hw_ppgtt;
}

To fit into your design the alising ppgtt pointer in dev_priv->gtt would
then only point at a hw_ppgtt struct, not the full deal with address space
and everything else around attached.

Cheers, Daniel

> 
> Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_debugfs.c        |  4 ++--
>  drivers/gpu/drm/i915/i915_dma.c            |  2 +-
>  drivers/gpu/drm/i915/i915_drv.h            |  6 +++---
>  drivers/gpu/drm/i915/i915_gem.c            | 12 ++++++------
>  drivers/gpu/drm/i915/i915_gem_context.c    |  4 ++--
>  drivers/gpu/drm/i915/i915_gem_execbuffer.c |  4 ++--
>  drivers/gpu/drm/i915/i915_gem_gtt.c        |  6 +++---
>  7 files changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
> b/drivers/gpu/drm/i915/i915_debugfs.c
> index c10a690..f3c76ab 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -1816,8 +1816,8 @@ static int i915_ppgtt_info(struct seq_file *m, void 
> *data)
>               seq_printf(m, "PP_DIR_BASE_READ: 0x%08x\n", 
> I915_READ(RING_PP_DIR_BASE_READ(ring)));
>               seq_printf(m, "PP_DIR_DCLV: 0x%08x\n", 
> I915_READ(RING_PP_DIR_DCLV(ring)));
>       }
> -     if (dev_priv->mm.aliasing_ppgtt) {
> -             struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
> +     if (dev_priv->gtt.aliasing_ppgtt) {
> +             struct i915_hw_ppgtt *ppgtt = dev_priv->gtt.aliasing_ppgtt;
>  
>               seq_printf(m, "aliasing PPGTT:\n");
>               seq_printf(m, "pd gtt offset: 0x%08x\n", ppgtt->pd_offset);
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index 3535ced..ef00847 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -977,7 +977,7 @@ static int i915_getparam(struct drm_device *dev, void 
> *data,
>               value = HAS_LLC(dev);
>               break;
>       case I915_PARAM_HAS_ALIASING_PPGTT:
> -             if (intel_enable_ppgtt(dev) && dev_priv->mm.aliasing_ppgtt)
> +             if (intel_enable_ppgtt(dev) && dev_priv->gtt.aliasing_ppgtt)
>                       value = 1;
>               break;
>       case I915_PARAM_HAS_WAIT_TIMEOUT:
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 7016074..0fa7a21 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -482,6 +482,9 @@ struct i915_gtt {
>       struct io_mapping *mappable;    /* Mapping to our CPU mappable region */
>       phys_addr_t mappable_base;      /* PA of our GMADR */
>  
> +     /** PPGTT used for aliasing the PPGTT with the GTT */
> +     struct i915_hw_ppgtt *aliasing_ppgtt;
> +
>       /** "Graphics Stolen Memory" holds the global PTEs */
>       void __iomem *gsm;
>  
> @@ -843,9 +846,6 @@ struct i915_gem_mm {
>        */
>       struct list_head unbound_list;
>  
> -     /** PPGTT used for aliasing the PPGTT with the GTT */
> -     struct i915_hw_ppgtt *aliasing_ppgtt;
> -
>       struct shrinker inactive_shrinker;
>       bool shrinker_no_lock_stealing;
>  
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index e31ed47..eb78c5b 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2620,7 +2620,7 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj)
>       if (obj->has_global_gtt_mapping)
>               i915_gem_gtt_unbind_object(obj);
>       if (obj->has_aliasing_ppgtt_mapping) {
> -             i915_ppgtt_unbind_object(dev_priv->mm.aliasing_ppgtt, obj);
> +             i915_ppgtt_unbind_object(dev_priv->gtt.aliasing_ppgtt, obj);
>               obj->has_aliasing_ppgtt_mapping = 0;
>       }
>       i915_gem_gtt_finish_object(obj);
> @@ -3359,7 +3359,7 @@ int i915_gem_object_set_cache_level(struct 
> drm_i915_gem_object *obj,
>               if (obj->has_global_gtt_mapping)
>                       i915_gem_gtt_bind_object(obj, cache_level);
>               if (obj->has_aliasing_ppgtt_mapping)
> -                     i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt,
> +                     i915_ppgtt_bind_object(dev_priv->gtt.aliasing_ppgtt,
>                                              obj, cache_level);
>  
>               obj->gtt_space->color = cache_level;
> @@ -3668,7 +3668,7 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
>               if (ret)
>                       return ret;
>  
> -             if (!dev_priv->mm.aliasing_ppgtt)
> +             if (!dev_priv->gtt.aliasing_ppgtt)
>                       i915_gem_gtt_bind_object(obj, obj->cache_level);
>       }
>  
> @@ -4191,10 +4191,10 @@ i915_gem_init_hw(struct drm_device *dev)
>        * the do_switch), but before enabling PPGTT. So don't move this.
>        */
>       ret = i915_gem_context_enable(dev_priv);
> -     if (ret || !dev_priv->mm.aliasing_ppgtt)
> +     if (ret || !dev_priv->gtt.aliasing_ppgtt)
>               goto disable_ctx_out;
>  
> -     ret = dev_priv->mm.aliasing_ppgtt->enable(dev);
> +     ret = dev_priv->gtt.aliasing_ppgtt->enable(dev);
>       if (ret)
>               goto disable_ctx_out;
>  
> @@ -4236,7 +4236,7 @@ int i915_gem_init(struct drm_device *dev)
>               dev_priv->hw_contexts_disabled = true;
>  
>  ggtt_only:
> -     if (!dev_priv->mm.aliasing_ppgtt) {
> +     if (!dev_priv->gtt.aliasing_ppgtt) {
>               if (HAS_HW_CONTEXTS(dev))
>                       DRM_DEBUG_DRIVER("Context setup failed %d\n", ret);
>               i915_gem_setup_global_gtt(dev, 0, dev_priv->gtt.mappable_end,
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
> b/drivers/gpu/drm/i915/i915_gem_context.c
> index d92f121..aa4fc4a 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -226,7 +226,7 @@ static int create_default_context(struct drm_i915_private 
> *dev_priv)
>       }
>  
>       dev_priv->ring[RCS].default_context = ctx;
> -     dev_priv->mm.aliasing_ppgtt = &ctx->ppgtt;
> +     dev_priv->gtt.aliasing_ppgtt = &ctx->ppgtt;
>  
>       DRM_DEBUG_DRIVER("Default HW context loaded\n");
>       return 0;
> @@ -300,7 +300,7 @@ void i915_gem_context_fini(struct drm_device *dev)
>       i915_gem_context_unreference(dctx);
>       dev_priv->ring[RCS].default_context = NULL;
>       dev_priv->ring[RCS].last_context = NULL;
> -     dev_priv->mm.aliasing_ppgtt = NULL;
> +     dev_priv->gtt.aliasing_ppgtt = NULL;
>  }
>  
>  int i915_gem_context_enable(struct drm_i915_private *dev_priv)
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
> b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 7fcd6c0..93870bb 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -429,8 +429,8 @@ i915_gem_execbuffer_reserve_object(struct 
> drm_i915_gem_object *obj,
>       }
>  
>       /* Ensure ppgtt mapping exists if needed */
> -     if (dev_priv->mm.aliasing_ppgtt && !obj->has_aliasing_ppgtt_mapping) {
> -             i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt,
> +     if (dev_priv->gtt.aliasing_ppgtt && !obj->has_aliasing_ppgtt_mapping) {
> +             i915_ppgtt_bind_object(dev_priv->gtt.aliasing_ppgtt,
>                                      obj, obj->cache_level);
>  
>               obj->has_aliasing_ppgtt_mapping = 1;
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
> b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index 6de75c7..18820cb 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -127,7 +127,7 @@ 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;
> +     struct i915_hw_ppgtt *ppgtt = dev_priv->gtt.aliasing_ppgtt;
>       int i;
>  
>       BUG_ON(ppgtt->pd_offset & 0x3f);
> @@ -445,8 +445,8 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev)
>                                      i915_gtt_vm->start / PAGE_SIZE,
>                                      i915_gtt_vm->total / PAGE_SIZE);
>  
> -     if (dev_priv->mm.aliasing_ppgtt)
> -             gen6_write_pdes(dev_priv->mm.aliasing_ppgtt);
> +     if (dev_priv->gtt.aliasing_ppgtt)
> +             gen6_write_pdes(dev_priv->gtt.aliasing_ppgtt);
>  
>       list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
>               i915_gem_clflush_object(obj);
> -- 
> 1.8.3.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to