drm/i915: Protect i915_active iterators from the shrinker
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 Feb 2019 13:47:04 +0000 (13:47 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 11 Feb 2019 11:17:20 +0000 (11:17 +0000)
commit312c4ba1bb71d666f924f84afd5bdc775b71278f
tree66d29cd3b0013cea0bbf4b8a5e65460a86121b34
parentc10c78ade57afe36fe290f79e466fcd5304e2f20
drm/i915: Protect i915_active iterators from the shrinker

If we allocate while iterating the rbtree of active nodes, we may hit
the shrinker and so retire the i915_active, reaping the rbtree. Modifying
the rbtree as we iterate is not good behaviour, so acquire the
i915_active first to keep the tree intact whenever we allocate.

Fixes: a42375af0a30 ("drm/i915: Release the active tracker tree upon idling")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190208134704.23039-1-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
drivers/gpu/drm/i915/i915_active.c