Revision adf27835a583470707debc55554b638dd85cb8a9 authored by Chris Wilson on 21 July 2017, 14:50:36 UTC, committed by Daniel Vetter on 27 July 2017, 20:07:24 UTC
I was being overly paranoid in not updating the execobject.offset after
performing the fallback copy where we set reloc.presumed_offset to -1.
The thinking was to ensure that a subsequent NORELOC execbuf would be
forced to process the invalid relocations. However this is overkill so
long as we *only* update the execobject.offset following a successful
update of the relocation value witin the batch. If we have to repeat the
execbuf due to a later interruption, then we may skip the relocations on
the second pass (honouring NORELOC) since the execobject.offset match
the actual offsets (even though reloc.presumed_offset is garbage).

Subsequent calls to execbuf with NORELOC should themselves ensure that
the reloc.presumed_offset have been corrected in case of future
migration.

Reporting back the actual execobject.offset, even when
reloc.presumed_offset is garbage, ensures that reuse of those objects
use the latest information to avoid relocations.

Fixes: 2889caa92321 ("drm/i915: Eliminate lots of iterations over the execobjects array")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101635
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170721145037.25105-4-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
(cherry picked from commit 1f727d9e725a408ef58d159c20fb2e51818ff153)
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
1 parent bed8d1c
History
File Mode Size
oss
seq
Kconfig -rw-r--r-- 4.7 KB
Makefile -rw-r--r-- 1.5 KB
compress_offload.c -rw-r--r-- 29.8 KB
control.c -rw-r--r-- 49.7 KB
control_compat.c -rw-r--r-- 13.1 KB
ctljack.c -rw-r--r-- 2.2 KB
device.c -rw-r--r-- 6.3 KB
hrtimer.c -rw-r--r-- 4.2 KB
hwdep.c -rw-r--r-- 13.2 KB
hwdep_compat.c -rw-r--r-- 2.3 KB
info.c -rw-r--r-- 19.6 KB
info_oss.c -rw-r--r-- 3.5 KB
init.c -rw-r--r-- 25.9 KB
isadma.c -rw-r--r-- 3.0 KB
jack.c -rw-r--r-- 9.9 KB
memalloc.c -rw-r--r-- 7.5 KB
memory.c -rw-r--r-- 2.5 KB
misc.c -rw-r--r-- 4.1 KB
pcm.c -rw-r--r-- 34.6 KB
pcm_compat.c -rw-r--r-- 21.7 KB
pcm_dmaengine.c -rw-r--r-- 11.6 KB
pcm_drm_eld.c -rw-r--r-- 2.4 KB
pcm_iec958.c -rw-r--r-- 3.2 KB
pcm_lib.c -rw-r--r-- 67.4 KB
pcm_local.h -rw-r--r-- 2.0 KB
pcm_memory.c -rw-r--r-- 13.5 KB
pcm_misc.c -rw-r--r-- 15.6 KB
pcm_native.c -rw-r--r-- 104.9 KB
pcm_param_trace.h -rw-r--r-- 4.5 KB
pcm_timer.c -rw-r--r-- 3.7 KB
pcm_trace.h -rw-r--r-- 4.9 KB
rawmidi.c -rw-r--r-- 49.2 KB
rawmidi_compat.c -rw-r--r-- 4.8 KB
seq_device.c -rw-r--r-- 7.6 KB
sgbuf.c -rw-r--r-- 4.2 KB
sound.c -rw-r--r-- 10.5 KB
sound_oss.c -rw-r--r-- 7.1 KB
timer.c -rw-r--r-- 53.5 KB
timer_compat.c -rw-r--r-- 4.9 KB
vmaster.c -rw-r--r-- 12.7 KB

back to top