• Maarten Lankhorst's avatar
    drm/i915: Remove short-term pins from execbuf, v6. · b5cfe6f7
    Maarten Lankhorst authored
    Add a flag PIN_VALIDATE, to indicate we don't need to pin and only
    protected by the object lock.
    
    This removes the need to unpin, which is done by just releasing the
    lock.
    
    eb_reserve is slightly reworked for readability, but the same steps
    are still done:
    - First pass pins with NONBLOCK.
    - Second pass unbinds all objects first, then pins.
    - Third pass is only called when not all objects are softpinned, and
      unbinds all objects, then calls i915_gem_evict_vm(), then pins.
    
    Changes since v1:
    - Split out eb_reserve() into separate functions for readability.
    Changes since v2:
    - Make batch buffer mappable on platforms where only GGTT is available,
      to prevent moving the batch buffer during relocations.
    Changes since v3:
    - Preserve current behavior for batch buffer, instead be cautious when
      calling i915_gem_object_ggtt_pin_ww, and re-use the current batch vma
      if it's inside ggtt and map-and-fenceable.
    - Remove impossible condition check from eb_reserve. (Matt)
    Changes since v5:
    - Do not even temporarily pin, just call i915_gem_evict_vm() and mark
      all vma's as unpinned.
    Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220114132320.109030-7-maarten.lankhorst@linux.intel.com
    b5cfe6f7
i915_vma.c 49.1 KB