Re: [Intel-gfx] [PATCH v8 15/16] drm/i915: Use to_gt() helper for GGTT accesses
Hi Matt, > > diff --git a/drivers/gpu/drm/i915/i915_driver.c > > b/drivers/gpu/drm/i915/i915_driver.c > > index 95174938b160..3c984553d86f 100644 > > --- a/drivers/gpu/drm/i915/i915_driver.c > > +++ b/drivers/gpu/drm/i915/i915_driver.c > > @@ -571,6 +571,8 @@ static int i915_driver_hw_probe(struct drm_i915_private > > *dev_priv) > > > > i915_perf_init(dev_priv); > > > > + intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt); > > + > > Does moving this call earlier in the function need to happen in patch > #13 rather than here? That patch converts the internals of > i915_ggtt_probe_hw() to use to_gt()->ggtt, but I believe until this > patch that pointer is uninitialized. yes... you cought me lazy... I will move it to #13. Thanks, Andi
Re: [Intel-gfx] [PATCH v8 15/16] drm/i915: Use to_gt() helper for GGTT accesses
On Tue, Dec 14, 2021 at 09:33:45PM +0200, Andi Shyti wrote: > From: Michał Winiarski > > GGTT is currently available both through i915->ggtt and gt->ggtt, and we > eventually want to get rid of the i915->ggtt one. > Use to_gt() for all i915->ggtt accesses to help with the future > refactoring. > > Signed-off-by: Michał Winiarski > Cc: Michal Wajdeczko > Signed-off-by: Andi Shyti > --- > drivers/gpu/drm/i915/gvt/dmabuf.c| 2 +- > drivers/gpu/drm/i915/i915_debugfs.c | 4 ++-- > drivers/gpu/drm/i915/i915_driver.c | 8 > drivers/gpu/drm/i915/i915_drv.h | 2 +- > drivers/gpu/drm/i915/i915_gem.c | 23 --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++--- > drivers/gpu/drm/i915/i915_getparam.c | 2 +- > drivers/gpu/drm/i915/i915_perf.c | 4 ++-- > 8 files changed, 26 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c > b/drivers/gpu/drm/i915/gvt/dmabuf.c > index 8e65cd8258b9..94c3eb1586b0 100644 > --- a/drivers/gpu/drm/i915/gvt/dmabuf.c > +++ b/drivers/gpu/drm/i915/gvt/dmabuf.c > @@ -84,7 +84,7 @@ static int vgpu_gem_get_pages( > kfree(st); > return ret; > } > - gtt_entries = (gen8_pte_t __iomem *)dev_priv->ggtt.gsm + > + gtt_entries = (gen8_pte_t __iomem *)to_gt(dev_priv)->ggtt->gsm + > (fb_info->start >> PAGE_SHIFT); > for_each_sg(st->sgl, sg, page_num, i) { > dma_addr_t dma_addr = > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c > b/drivers/gpu/drm/i915/i915_debugfs.c > index 93c3d154885b..0913daff62d7 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -390,9 +390,9 @@ static int i915_swizzle_info(struct seq_file *m, void > *data) > intel_wakeref_t wakeref; > > seq_printf(m, "bit6 swizzle for X-tiling = %s\n", > -swizzle_string(dev_priv->ggtt.bit_6_swizzle_x)); > +swizzle_string(to_gt(dev_priv)->ggtt->bit_6_swizzle_x)); > seq_printf(m, "bit6 swizzle for Y-tiling = %s\n", > -swizzle_string(dev_priv->ggtt.bit_6_swizzle_y)); > +swizzle_string(to_gt(dev_priv)->ggtt->bit_6_swizzle_y)); > > if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) > seq_puts(m, "L-shaped memory detected\n"); > diff --git a/drivers/gpu/drm/i915/i915_driver.c > b/drivers/gpu/drm/i915/i915_driver.c > index 95174938b160..3c984553d86f 100644 > --- a/drivers/gpu/drm/i915/i915_driver.c > +++ b/drivers/gpu/drm/i915/i915_driver.c > @@ -571,6 +571,8 @@ static int i915_driver_hw_probe(struct drm_i915_private > *dev_priv) > > i915_perf_init(dev_priv); > > + intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt); > + Does moving this call earlier in the function need to happen in patch #13 rather than here? That patch converts the internals of i915_ggtt_probe_hw() to use to_gt()->ggtt, but I believe until this patch that pointer is uninitialized. Matt > ret = i915_ggtt_probe_hw(dev_priv); > if (ret) > goto err_perf; > @@ -587,8 +589,6 @@ static int i915_driver_hw_probe(struct drm_i915_private > *dev_priv) > if (ret) > goto err_ggtt; > > - intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt); > - > ret = intel_gt_probe_lmem(to_gt(dev_priv)); > if (ret) > goto err_mem_regions; > @@ -1146,7 +1146,7 @@ static int i915_drm_suspend(struct drm_device *dev) > > /* Must be called before GGTT is suspended. */ > intel_dpt_suspend(dev_priv); > - i915_ggtt_suspend(&dev_priv->ggtt); > + i915_ggtt_suspend(to_gt(dev_priv)->ggtt); > > i915_save_display(dev_priv); > > @@ -1270,7 +1270,7 @@ static int i915_drm_resume(struct drm_device *dev) > if (ret) > drm_err(&dev_priv->drm, "failed to re-enable GGTT\n"); > > - i915_ggtt_resume(&dev_priv->ggtt); > + i915_ggtt_resume(to_gt(dev_priv)->ggtt); > /* Must be called after GGTT is resumed. */ > intel_dpt_resume(dev_priv); > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 28c1524e2e3b..65724e4df3bd 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1762,7 +1762,7 @@ static inline bool > i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_objec > { > struct drm_i915_private *i915 = to_i915(obj->base.dev); > > - return i915->ggtt.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && > + return to_gt(i915)->ggtt->bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 > && > i915_gem_object_is_tiled(obj); > } > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 8ba2119092f2..45e3b4c540a1 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -88,7 +88,8 @@ int > i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, >
[Intel-gfx] [PATCH v8 15/16] drm/i915: Use to_gt() helper for GGTT accesses
From: Michał Winiarski GGTT is currently available both through i915->ggtt and gt->ggtt, and we eventually want to get rid of the i915->ggtt one. Use to_gt() for all i915->ggtt accesses to help with the future refactoring. Signed-off-by: Michał Winiarski Cc: Michal Wajdeczko Signed-off-by: Andi Shyti --- drivers/gpu/drm/i915/gvt/dmabuf.c| 2 +- drivers/gpu/drm/i915/i915_debugfs.c | 4 ++-- drivers/gpu/drm/i915/i915_driver.c | 8 drivers/gpu/drm/i915/i915_drv.h | 2 +- drivers/gpu/drm/i915/i915_gem.c | 23 --- drivers/gpu/drm/i915/i915_gem_gtt.c | 6 +++--- drivers/gpu/drm/i915/i915_getparam.c | 2 +- drivers/gpu/drm/i915/i915_perf.c | 4 ++-- 8 files changed, 26 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c b/drivers/gpu/drm/i915/gvt/dmabuf.c index 8e65cd8258b9..94c3eb1586b0 100644 --- a/drivers/gpu/drm/i915/gvt/dmabuf.c +++ b/drivers/gpu/drm/i915/gvt/dmabuf.c @@ -84,7 +84,7 @@ static int vgpu_gem_get_pages( kfree(st); return ret; } - gtt_entries = (gen8_pte_t __iomem *)dev_priv->ggtt.gsm + + gtt_entries = (gen8_pte_t __iomem *)to_gt(dev_priv)->ggtt->gsm + (fb_info->start >> PAGE_SHIFT); for_each_sg(st->sgl, sg, page_num, i) { dma_addr_t dma_addr = diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 93c3d154885b..0913daff62d7 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -390,9 +390,9 @@ static int i915_swizzle_info(struct seq_file *m, void *data) intel_wakeref_t wakeref; seq_printf(m, "bit6 swizzle for X-tiling = %s\n", - swizzle_string(dev_priv->ggtt.bit_6_swizzle_x)); + swizzle_string(to_gt(dev_priv)->ggtt->bit_6_swizzle_x)); seq_printf(m, "bit6 swizzle for Y-tiling = %s\n", - swizzle_string(dev_priv->ggtt.bit_6_swizzle_y)); + swizzle_string(to_gt(dev_priv)->ggtt->bit_6_swizzle_y)); if (dev_priv->quirks & QUIRK_PIN_SWIZZLED_PAGES) seq_puts(m, "L-shaped memory detected\n"); diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c index 95174938b160..3c984553d86f 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -571,6 +571,8 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) i915_perf_init(dev_priv); + intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt); + ret = i915_ggtt_probe_hw(dev_priv); if (ret) goto err_perf; @@ -587,8 +589,6 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv) if (ret) goto err_ggtt; - intel_gt_init_hw_early(to_gt(dev_priv), &dev_priv->ggtt); - ret = intel_gt_probe_lmem(to_gt(dev_priv)); if (ret) goto err_mem_regions; @@ -1146,7 +1146,7 @@ static int i915_drm_suspend(struct drm_device *dev) /* Must be called before GGTT is suspended. */ intel_dpt_suspend(dev_priv); - i915_ggtt_suspend(&dev_priv->ggtt); + i915_ggtt_suspend(to_gt(dev_priv)->ggtt); i915_save_display(dev_priv); @@ -1270,7 +1270,7 @@ static int i915_drm_resume(struct drm_device *dev) if (ret) drm_err(&dev_priv->drm, "failed to re-enable GGTT\n"); - i915_ggtt_resume(&dev_priv->ggtt); + i915_ggtt_resume(to_gt(dev_priv)->ggtt); /* Must be called after GGTT is resumed. */ intel_dpt_resume(dev_priv); diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 28c1524e2e3b..65724e4df3bd 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1762,7 +1762,7 @@ static inline bool i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_objec { struct drm_i915_private *i915 = to_i915(obj->base.dev); - return i915->ggtt.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && + return to_gt(i915)->ggtt->bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && i915_gem_object_is_tiled(obj); } diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 8ba2119092f2..45e3b4c540a1 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -88,7 +88,8 @@ int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { - struct i915_ggtt *ggtt = &to_i915(dev)->ggtt; + struct drm_i915_private *i915 = to_i915(dev); + struct i915_ggtt *ggtt = to_gt(i915)->ggtt; struct drm_i915_gem_get_aperture *args = data; struct i915_vma *vma; u64 pinned; @@ -289,7 +290,7 @@ static struct i915_vma *i915_gem_gtt_prepare(struct drm_i915_gem_object *obj, bool write)