• Maarten Lankhorst's avatar
    drm/i915: Do not share hwsp across contexts any more, v8. · 12ca695d
    Maarten Lankhorst authored
    Instead of sharing pages with breadcrumbs, give each timeline a
    single page. This allows unrelated timelines not to share locks
    any more during command submission.
    
    As an additional benefit, seqno wraparound no longer requires
    i915_vma_pin, which means we no longer need to worry about a
    potential -EDEADLK at a point where we are ready to submit.
    
    Changes since v1:
    - Fix erroneous i915_vma_acquire that should be a i915_vma_release (ickle).
    - Extra check for completion in intel_read_hwsp().
    Changes since v2:
    - Fix inconsistent indent in hwsp_alloc() (kbuild)
    - memset entire cacheline to 0.
    Changes since v3:
    - Do same in intel_timeline_reset_seqno(), and clflush for good measure.
    Changes since v4:
    - Use refcounting on timeline, instead of relying on i915_active.
    - Fix waiting on kernel requests.
    Changes since v5:
    - Bump amount of slots to maximum (256), for best wraparounds.
    - Add hwsp_offset to i915_request to fix potential wraparound hang.
    - Ensure timeline wrap test works with the changes.
    - Assign hwsp in intel_timeline_read_hwsp() within the rcu lock to
      fix a hang.
    Changes since v6:
    - Rename i915_request_active_offset to i915_request_active_seqno(),
      and elaborate the function. (tvrtko)
    Changes since v7:
    - Move hunk to where it belongs. (jekstrand)
    - Replace CACHELINE_BYTES with TIMELINE_SEQNO_BYTES. (jekstrand)
    Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> #v1
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210323155059.628690-2-maarten.lankhorst@linux.intel.com
    12ca695d
selftest_timeline.c 30.5 KB