On Wed, Dec 19, 2012 at 11:20:15AM -0800, Ben Widawsky wrote: > On Wed, Dec 19, 2012 at 01:45:23PM +0200, Ville Syrj?l? wrote: > > On Tue, Dec 18, 2012 at 10:31:27AM -0800, Ben Widawsky wrote: > > > The iomapping of the register region has historically been a uint32_t > > > for the obvious reason that our PTE size was always 4b. In the future > > > however, we cannot make this assumption. > > > > > > By making the type void, it makes the upcoming pointer math we will do > > > much easier, and hopefully gives the compiler opportunities to warn us > > > when we do stupid things. > > > > > > v2: Cast to __iomem, caught by Ville > > > > > > Signed-off-by: Ben Widawsky <ben at bwidawsk.net> > > > --- > > > drivers/gpu/drm/i915/i915_drv.h | 2 +- > > > drivers/gpu/drm/i915/i915_gem_gtt.c | 5 +++-- > > > 2 files changed, 4 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > > > index 49f465a..90dfbd5 100644 > > > --- a/drivers/gpu/drm/i915/i915_drv.h > > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > > @@ -800,7 +800,7 @@ typedef struct drm_i915_private { > > > unsigned long stolen_base; /* limited to low memory (32-bit) */ > > > > > > /** "Graphics Stolen Memory" holds the global PTEs */ > > > - uint32_t __iomem *gsm; > > > + void __iomem *gsm; > > > > > > struct io_mapping *gtt_mapping; > > > phys_addr_t gtt_base_addr; > > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > > > index b4c1e34..a52e784 100644 > > > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > > > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > > > @@ -290,7 +290,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev) > > > return; > > > > > > > > > - pd_addr = dev_priv->mm.gsm + ppgtt->pd_offset/sizeof(gtt_pte_t); > > > + pd_addr = (gtt_pte_t *)dev_priv->mm.gsm + ppgtt->pd_offset/sizeof(gtt_pte_t); > > > > This cast is still missing __iomem. > > That looks to be correct. But it wasn't introduced by me, right? Ie. > separate patch to fix it before this one? Very much, and right in this patch - pd_addr and mm.gsm are both __iomem, so you need to keep that annotation in the cast from void* to gtt_pte_t *. Fixed up and the remaining three patches applied. Thanks, Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch