drm/i915: Mark up vma->active as safe for use inside shrinkers
Since a shrinker may be forced to wait on GPU activity, i915_active_wait(&vma->active) must be safe for use inside a shrinker, and so let's mark up the lock as being acquired by the shrinker to avoid any nasty surprises creeping in. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190703091726.11690-8-chris@chris-wilson.co.uk
This commit is contained in:
parent
d650d1f5cf
commit
09480072e3
@ -22,6 +22,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/sched/mm.h>
|
||||
#include <drm/drm_gem.h>
|
||||
|
||||
#include "display/intel_frontbuffer.h"
|
||||
@ -120,6 +121,13 @@ vma_create(struct drm_i915_gem_object *obj,
|
||||
__i915_vma_active, __i915_vma_retire);
|
||||
INIT_ACTIVE_REQUEST(&vma->last_fence);
|
||||
|
||||
/* Declare ourselves safe for use inside shrinkers */
|
||||
if (IS_ENABLED(CONFIG_LOCKDEP)) {
|
||||
fs_reclaim_acquire(GFP_KERNEL);
|
||||
might_lock(&vma->active.mutex);
|
||||
fs_reclaim_release(GFP_KERNEL);
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&vma->closed_link);
|
||||
|
||||
if (view && view->type != I915_GGTT_VIEW_NORMAL) {
|
||||
|
Loading…
Reference in New Issue
Block a user