]> git.karo-electronics.de Git - karo-tx-linux.git/commit
drm/i915: Do not call retire_requests from wait_for_rendering
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 17 Mar 2014 12:21:55 +0000 (12:21 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 25 Apr 2014 14:18:01 +0000 (16:18 +0200)
commit9403eb1064168ea7b47c5ccd04ec17b98ca9a0de
tree7929d0acb9f3270ba9be2751ea214e2f01daa460
parent7184b2a75e1c8ad9ca078a15c4197e14bf9885a5
drm/i915: Do not call retire_requests from wait_for_rendering

A common issue we have is that retiring requests causes recursion
through GTT manipulation or page table manipulation which we can only
handle at very specific points. However, to maintain internal
consistency (enforced through our sanity checks on write_domain at
various points in the GEM object lifecycle) we do need to retire the
object prior to marking it with a new write_domain, and also clear the
write_domain for the implicit flush following a batch.

Note that this then allows the unbound objects to still be on the active
lists, and so care must be taken when removing objects from unbound lists
(similar to the caveats we face processing the bound lists).

v2: Fix i915_gem_shrink_all() to handle updated object lifetime rules,
by refactoring it to call into __i915_gem_shrink().

v3: Missed an object-retire prior to changing cache domains in
i915_gem_object_set_cache_leve()

v4: Rebase

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Brad Volkin <bradley.d.volkin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem_execbuffer.c