On Fri, Dec 18, 2015 at 09:01:03PM +0100, Michał Winiarski wrote: > According to bspec, some parts of HW require the addresses to be in > a canonical form, where bits [63:48] == [47]. Let's convert addresses to > canonical form prior to relocating and return converted offsets to > userspace. We also need to make sure that userspace is using addresses > in canonical form in case of softpin. > > v2: Whitespace fixup, gen8_canonical_addr description (Chris, Ville) > v3: Rebase on top of softpin, fix a hole in relocate_entry, > s/expect/require (Chris) > v4: Handle softpin in validate_exec_list (Chris) > > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Michel Thierry <michel.thierry@xxxxxxxxx> > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Michał Winiarski <michal.winiarski@xxxxxxxxx> > @@ -625,8 +645,9 @@ i915_gem_execbuffer_reserve_vma(struct i915_vma *vma, > entry->flags |= __EXEC_OBJECT_HAS_FENCE; > } > > - if (entry->offset != vma->node.start) { > - entry->offset = vma->node.start; > + offset = gen8_canonical_addr(vma->node.start); > + if (entry->offset != offset) { entry->offset is now in normal form. > + entry->offset = offset; > *need_reloc = true; > } But we need to convert back to canonical form again on the userspace boundary (copy_to_user). -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx