]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit
drm/i915: Support 64b relocations
authorBen Widawsky <benjamin.widawsky@intel.com>
Tue, 29 Apr 2014 00:18:28 +0000 (17:18 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 5 May 2014 14:04:23 +0000 (16:04 +0200)
commitd9ceb957fd97836c7fb0e403062e68ad2f737021
tree78cadbb7fee22b6511c7670e07c6985ea9e7ccc7
parent9bcb144c83d4df12c8150352fa876aeff289e39c
drm/i915: Support 64b relocations

All the rest of the code to enable this is in my branch. Without my
branch, hitting > 32b offsets is impossible. The code has always
"supported" 64b, but it's never actually been run of tested. This change
doesn't actually fix anything. [1] I am not sure why X won't work yet. I
do not get hangs or obvious errors.

There are 3 fixes grouped together here. First is to remove the
hardcoded 0 for the upper dword of the relocation. The next fix is to
use a 64b value for target_offset. The final fix is to not directly
apply target_offset to reloc->delta. reloc->delta is part of ABI, and so
we cannot change it. As it stands, 32b is enough to represent everything
we're interested in representing anyway. The main problem is, we cannot
add greater than 32b values to it directly.

[1] Almost all of intel-gpu-tools is not yet ready to test 64b
relocations. There are a few places that expect 32b values for offsets
and these all won't work.

Cc: Rafael Barbalho <rafael.barbalho@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_execbuffer.c