]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
drm/i915/gem: Taint all shrinkable object locks
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 29 May 2020 18:32:03 +0000 (19:32 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 29 May 2020 22:38:28 +0000 (23:38 +0100)
If we declare that an object type is shrinkable (any that we can reclaim
to recover system pages), make sure we taint the object mutex so that
lockdep expects us to use it within fs_reclaim. lockdep will then
complain the first time we try to allocate while holding the plain
mutex, as doing so invites potential recursion.

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/20200529183204.16850-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/i915_gem_object.c

index 99356c00c19ee7afcc200671471cfc7a1ea7f855..21635dd415a33e562b7aeae7a8b81326d163777b 100644 (file)
@@ -72,6 +72,10 @@ void i915_gem_object_init(struct drm_i915_gem_object *obj,
        obj->mm.madv = I915_MADV_WILLNEED;
        INIT_RADIX_TREE(&obj->mm.get_page.radix, GFP_KERNEL | __GFP_NOWARN);
        mutex_init(&obj->mm.get_page.lock);
+
+       if (IS_ENABLED(CONFIG_LOCKDEP) && i915_gem_object_is_shrinkable(obj))
+               i915_gem_shrinker_taints_mutex(to_i915(obj->base.dev),
+                                              &obj->mm.lock);
 }
 
 /**