Message ID | 1460978042-9953-3-git-send-email-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 18/04/16 12:14, Chris Wilson wrote: > In a couple of places, we have an i915_address_space that we know is > really an i915_ggtt that we want to use. Create an inline helper to > convert from the i915_address_space subclass into its container. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 9f165feb54ae..b3af2e808b49 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -93,6 +93,13 @@ > * > */ > > +static inline struct i915_ggtt * > +i915_vm_to_ggtt(struct i915_address_space *vm) > +{ > + GEM_BUG_ON(!i915_is_ggtt(vm)); > + return container_of(vm, struct i915_ggtt, base); > +} > + > static int > i915_get_ggtt_vma_pages(struct i915_vma *vma); > > @@ -2359,7 +2366,7 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm, > enum i915_cache_level level, u32 unused) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > gen8_pte_t __iomem *gtt_entries = > (gen8_pte_t __iomem *)ggtt->gsm + first_entry; > @@ -2437,7 +2444,7 @@ static void gen6_ggtt_insert_entries(struct i915_address_space *vm, > enum i915_cache_level level, u32 flags) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > gen6_pte_t __iomem *gtt_entries = > (gen6_pte_t __iomem *)ggtt->gsm + first_entry; > @@ -2481,7 +2488,7 @@ static void gen8_ggtt_clear_range(struct i915_address_space *vm, > bool use_scratch) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > unsigned num_entries = length >> PAGE_SHIFT; > gen8_pte_t scratch_pte, __iomem *gtt_base = > @@ -2513,7 +2520,7 @@ static void gen6_ggtt_clear_range(struct i915_address_space *vm, > bool use_scratch) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > unsigned num_entries = length >> PAGE_SHIFT; > gen6_pte_t scratch_pte, __iomem *gtt_base = > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko
On ma, 2016-04-18 at 12:14 +0100, Chris Wilson wrote: > In a couple of places, we have an i915_address_space that we know is > really an i915_ggtt that we want to use. Create an inline helper to > convert from the i915_address_space subclass into its container. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Comment below. Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 9f165feb54ae..b3af2e808b49 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -93,6 +93,13 @@ > * > */ > > +static inline struct i915_ggtt * > +i915_vm_to_ggtt(struct i915_address_space *vm) > +{ > + GEM_BUG_ON(!i915_is_ggtt(vm)); > + return container_of(vm, struct i915_ggtt, base); > +} > + > static int > i915_get_ggtt_vma_pages(struct i915_vma *vma); > > @@ -2359,7 +2366,7 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm, > enum i915_cache_level level, u32 unused) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); I do not see this as a very necessary change, because we are going to have only one Global XYZ per device by definiton of "global". Especially after the rename it's going to be; struct i915_ggtt *ggtt = &i915->ggtt; But regardless my R-b. Regards, Joonas > unsigned first_entry = start >> PAGE_SHIFT; > gen8_pte_t __iomem *gtt_entries = > (gen8_pte_t __iomem *)ggtt->gsm + first_entry; > @@ -2437,7 +2444,7 @@ static void gen6_ggtt_insert_entries(struct i915_address_space *vm, > enum i915_cache_level level, u32 flags) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > gen6_pte_t __iomem *gtt_entries = > (gen6_pte_t __iomem *)ggtt->gsm + first_entry; > @@ -2481,7 +2488,7 @@ static void gen8_ggtt_clear_range(struct i915_address_space *vm, > bool use_scratch) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > unsigned num_entries = length >> PAGE_SHIFT; > gen8_pte_t scratch_pte, __iomem *gtt_base = > @@ -2513,7 +2520,7 @@ static void gen6_ggtt_clear_range(struct i915_address_space *vm, > bool use_scratch) > { > struct drm_i915_private *dev_priv = to_i915(vm->dev); > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > unsigned first_entry = start >> PAGE_SHIFT; > unsigned num_entries = length >> PAGE_SHIFT; > gen6_pte_t scratch_pte, __iomem *gtt_base =
On Mon, Apr 18, 2016 at 04:37:12PM +0300, Joonas Lahtinen wrote: > On ma, 2016-04-18 at 12:14 +0100, Chris Wilson wrote: > > In a couple of places, we have an i915_address_space that we know is > > really an i915_ggtt that we want to use. Create an inline helper to > > convert from the i915_address_space subclass into its container. > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > Comment below. > > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> > > --- > > drivers/gpu/drm/i915/i915_gem_gtt.c | 15 +++++++++++---- > > 1 file changed, 11 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > > index 9f165feb54ae..b3af2e808b49 100644 > > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > > @@ -93,6 +93,13 @@ > > * > > */ > > > > +static inline struct i915_ggtt * > > +i915_vm_to_ggtt(struct i915_address_space *vm) > > +{ > > + GEM_BUG_ON(!i915_is_ggtt(vm)); > > + return container_of(vm, struct i915_ggtt, base); > > +} > > + > > static int > > i915_get_ggtt_vma_pages(struct i915_vma *vma); > > > > @@ -2359,7 +2366,7 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm, > > enum i915_cache_level level, u32 unused) > > { > > struct drm_i915_private *dev_priv = to_i915(vm->dev); > > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > > + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); > > I do not see this as a very necessary change, because we are going to > have only one Global XYZ per device by definiton of "global". I ultimately want to remove the dev_priv usage here. But it is also useful for consistency with a couple of other ggtt PTE routines that do not need the drm_i915_private pointer at all, that aren't yet upstream. -Chris
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 9f165feb54ae..b3af2e808b49 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -93,6 +93,13 @@ * */ +static inline struct i915_ggtt * +i915_vm_to_ggtt(struct i915_address_space *vm) +{ + GEM_BUG_ON(!i915_is_ggtt(vm)); + return container_of(vm, struct i915_ggtt, base); +} + static int i915_get_ggtt_vma_pages(struct i915_vma *vma); @@ -2359,7 +2366,7 @@ static void gen8_ggtt_insert_entries(struct i915_address_space *vm, enum i915_cache_level level, u32 unused) { struct drm_i915_private *dev_priv = to_i915(vm->dev); - struct i915_ggtt *ggtt = &dev_priv->ggtt; + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); unsigned first_entry = start >> PAGE_SHIFT; gen8_pte_t __iomem *gtt_entries = (gen8_pte_t __iomem *)ggtt->gsm + first_entry; @@ -2437,7 +2444,7 @@ static void gen6_ggtt_insert_entries(struct i915_address_space *vm, enum i915_cache_level level, u32 flags) { struct drm_i915_private *dev_priv = to_i915(vm->dev); - struct i915_ggtt *ggtt = &dev_priv->ggtt; + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); unsigned first_entry = start >> PAGE_SHIFT; gen6_pte_t __iomem *gtt_entries = (gen6_pte_t __iomem *)ggtt->gsm + first_entry; @@ -2481,7 +2488,7 @@ static void gen8_ggtt_clear_range(struct i915_address_space *vm, bool use_scratch) { struct drm_i915_private *dev_priv = to_i915(vm->dev); - struct i915_ggtt *ggtt = &dev_priv->ggtt; + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); unsigned first_entry = start >> PAGE_SHIFT; unsigned num_entries = length >> PAGE_SHIFT; gen8_pte_t scratch_pte, __iomem *gtt_base = @@ -2513,7 +2520,7 @@ static void gen6_ggtt_clear_range(struct i915_address_space *vm, bool use_scratch) { struct drm_i915_private *dev_priv = to_i915(vm->dev); - struct i915_ggtt *ggtt = &dev_priv->ggtt; + struct i915_ggtt *ggtt = i915_vm_to_ggtt(vm); unsigned first_entry = start >> PAGE_SHIFT; unsigned num_entries = length >> PAGE_SHIFT; gen6_pte_t scratch_pte, __iomem *gtt_base =
In a couple of places, we have an i915_address_space that we know is really an i915_ggtt that we want to use. Create an inline helper to convert from the i915_address_space subclass into its container. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> --- drivers/gpu/drm/i915/i915_gem_gtt.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)