Message ID | 20170516082948.28090-4-matthew.auld@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, May 16, 2017 at 09:29:34AM +0100, Matthew Auld wrote: > When inserting into a 48bit PPGTT we need to align the vma start address > to the required page size boundary. The size will already be aligned so > no padding is needed. > > Signed-off-by: Matthew Auld <matthew.auld@intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/i915_vma.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c > index 1aba47024656..53f6c94b2ee6 100644 > --- a/drivers/gpu/drm/i915/i915_vma.c > +++ b/drivers/gpu/drm/i915/i915_vma.c > @@ -471,6 +471,14 @@ i915_vma_insert(struct i915_vma *vma, u64 size, u64 alignment, u64 flags) > if (ret) > return ret; > > + if (i915_vm_is_48bit(vma->vm) && > + obj->gtt_page_size > I915_GTT_PAGE_SIZE) { > + unsigned int page_alignment = obj->gtt_page_size; > + > + alignment = max_t(typeof(alignment), alignment, page_alignment); > + GEM_BUG_ON(!IS_ALIGNED(vma->size, obj->gtt_page_size)); > + } > + > if (flags & PIN_OFFSET_FIXED) { We should only increase the minimum alignment for !FIXED. Otherwise the softpin user will not know what games we are playing and be able to compensate. -Chris
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 1aba47024656..53f6c94b2ee6 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -471,6 +471,14 @@ i915_vma_insert(struct i915_vma *vma, u64 size, u64 alignment, u64 flags) if (ret) return ret; + if (i915_vm_is_48bit(vma->vm) && + obj->gtt_page_size > I915_GTT_PAGE_SIZE) { + unsigned int page_alignment = obj->gtt_page_size; + + alignment = max_t(typeof(alignment), alignment, page_alignment); + GEM_BUG_ON(!IS_ALIGNED(vma->size, obj->gtt_page_size)); + } + if (flags & PIN_OFFSET_FIXED) { u64 offset = flags & PIN_OFFSET_MASK; if (!IS_ALIGNED(offset, alignment) ||
When inserting into a 48bit PPGTT we need to align the vma start address to the required page size boundary. The size will already be aligned so no padding is needed. Signed-off-by: Matthew Auld <matthew.auld@intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_vma.c | 8 ++++++++ 1 file changed, 8 insertions(+)