• D
    drm/i915: Drop __rcu from gem_context->vm · 9ec8795e
    Daniel Vetter 提交于
    It's been invariant since
    
        commit ccbc1b97
        Author: Jason Ekstrand <jason@jlekstrand.net>
        Date:   Thu Jul 8 10:48:30 2021 -0500
    
            drm/i915/gem: Don't allow changing the VM on running contexts (v4)
    
    this just completes the deed. I've tried to split out prep work for
    more careful review as much as possible, this is what's left:
    
    - get_ppgtt gets simplified since we don't need to grab a temporary
      reference - we can rely on the temporary reference for the gem_ctx
      while we inspect the vm. The new vm_id still needs a full
      i915_vm_open ofc. This also removes the final caller of context_get_vm_rcu
    
    - A pile of selftests can now just look at ctx->vm instead of
      rcu_dereference_protected( , true) or similar things.
    
    - All callers of i915_gem_context_vm also disappear.
    
    - I've changed the hugepage selftest to set scrub_64K without any
      locking, because when we inspect that setting we're also not taking
      any locks either. It works because it's a selftests that's careful
      (single threaded gives you nice ordering) and not a live driver
      where races can happen from anywhere.
    
    These can only be split up further if we have some intermediate state
    with a bunch more rcu_dereference_protected(ctx->vm, true), just to
    shut up lockdep and sparse.
    
    The conversion to __rcu happened in
    
    commit a4e7ccda
    Author: Chris Wilson <chris@chris-wilson.co.uk>
    Date:   Fri Oct 4 14:40:09 2019 +0100
    
        drm/i915: Move context management under GEM
    
    Note that we're not breaking the actual bugfix in there: The real
    bugfix is pushing the i915_vm_relase onto a separate worker, to avoid
    locking inversion issues. The rcu conversion was just thrown in for
    entertainment value on top (no vm lookup isn't even close to anything
    that's a hotpath where removing the single spinlock can be measured).
    
    v2: Rebase over the change to move the i915_vm_put() into
    i915_gem_context_release().
    
    v3: Trivial conflict against repainted shed.
    Reviewed-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
    Cc: Jon Bloomfield <jon.bloomfield@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
    Cc: Matthew Auld <matthew.auld@intel.com>
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Jason Ekstrand <jason@jlekstrand.net>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210902142057.929669-9-daniel.vetter@ffwll.ch
    9ec8795e
i915_gem_context.h 6.4 KB