• Daniel Vetter's avatar
    drm/i915: Release ctx->syncobj on final put, not on ctx close · 03153666
    Daniel Vetter authored
    gem context refcounting is another exercise in least locking design it
    seems, where most things get destroyed upon context closure (which can
    race with anything really). Only the actual memory allocation and the
    locks survive while holding a reference.
    
    This tripped up Jason when reimplementing the single timeline feature
    in
    
    commit 00dae4d3
    Author: Jason Ekstrand <jason@jlekstrand.net>
    Date:   Thu Jul 8 10:48:12 2021 -0500
    
        drm/i915: Implement SINGLE_TIMELINE with a syncobj (v4)
    
    We could fix the bug by holding ctx->mutex in execbuf and clear the
    pointer (again while holding the mutex) context_close, but it's
    cleaner to just make the context object actually invariant over its
    _entire_ lifetime. This way any other ioctl that's potentially racing,
    but holding a full reference, can still rely on ctx->syncobj being
    an immutable pointer. Which without this change, is not the case.
    Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Fixes: 00dae4d3 ("drm/i915: Implement SINGLE_TIMELINE with a syncobj (v4)")
    Cc: Jason Ekstrand <jason@jlekstrand.net>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: "Thomas Hellström" <thomas.hellstrom@intel.com>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210902142057.929669-2-daniel.vetter@ffwll.ch
    (cherry picked from commit c238980e)
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    03153666
i915_gem_context.c 55.8 KB