• Chris Wilson's avatar
    drm/i915: Hold a reference to the object whilst unbinding the eviction list · af626103
    Chris Wilson authored
    During heavy aperture thrashing we may be forced to wait upon several active
    objects during eviction. The active list may be the last reference to
    these objects and so the action of waiting upon one of them may cause
    another to be freed (and itself unbound). To prevent the object
    disappearing underneath us, we need to acquire and hold a reference
    whilst unbinding.
    
    This should fix the reported page refcount OOPS:
    
    kernel BUG at drivers/gpu/drm/i915/i915_gem.c:1444!
    ...
    RIP: 0010:[<ffffffffa0093026>]  [<ffffffffa0093026>] i915_gem_object_put_pages+0x25/0xf5 [i915]
    Call Trace:
     [<ffffffffa009481d>] i915_gem_object_unbind+0xc5/0x1a7 [i915]
     [<ffffffffa0098ab2>] i915_gem_evict_something+0x3bd/0x409 [i915]
     [<ffffffffa0027923>] ? drm_gem_object_lookup+0x27/0x57 [drm]
     [<ffffffffa0093bc3>] i915_gem_object_bind_to_gtt+0x1d3/0x279 [i915]
     [<ffffffffa0095b30>] i915_gem_object_pin+0xa3/0x146 [i915]
     [<ffffffffa0027948>] ? drm_gem_object_lookup+0x4c/0x57 [drm]
     [<ffffffffa00961bc>] i915_gem_do_execbuffer+0x50d/0xe32 [i915]
    Reported-by: default avatarShawn Starr <shawn.starr@rogers.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18902Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    af626103
i915_gem_evict.c 8.31 KB