mbox series

[0/7] dma-resv fence DAG fixes

Message ID 20210706101209.3034092-1-daniel.vetter@ffwll.ch (mailing list archive)
Headers show
Series dma-resv fence DAG fixes | expand


Daniel Vetter July 6, 2021, 10:12 a.m. UTC
Hi all,

Finally I think I got them all in trying to audit all drivers for how they
deal with dma-resv dependencies in their command submission ioctl.

This series is incomplete, it also needs a few things from Christian
- nouveau fix for waiting for all fences
- various patches for fixing up dma-buf/resv functions to always wait for
  all fences (dma-buf poll, is_signalled, ...)
- I do include the one msm patch from Christian here since there was
  another issue in msm that needed fixing, and to make sure we have the
  complete set for msm

Two main things:
- fix drivers that currently can break the DAG. I opted for the dumbest
  possible way and not for rolling out dma_fence_chain - this can be fixed
  later on if needed.

- allow shared fences to be decoupled from the exclusive slot, which
  mostly means we can't skip waiting for the exclusive fence if there's
  shared fences present, we have to wait for all fences. This is a
  semantic change compared to what we've had thus far, but really makes a
  ton of sense given where things are heading towards.

Note that this means the import/export patches from Jason need to be
adjusted too to fit.

Plus some docs for dma-resv, they've been rather lacking.

Testing and review highly welcome.

Christian K├Ânig (1):
  drm/msm: always wait for the exclusive fence

Daniel Vetter (6):
  drm/msm: Don't break exclusive fence ordering
  drm/etnaviv: Don't break exclusive fence ordering
  drm/i915: delete exclude argument from i915_sw_fence_await_reservation
  drm/i915: Always wait for the exclusive fence
  drm/i915: Don't break exclusive fence ordering
  dma-resv: Give the docs a do-over

 drivers/dma-buf/dma-resv.c                    |  22 +++-
 drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c  |   8 +-
 drivers/gpu/drm/i915/display/intel_display.c  |   4 +-
 drivers/gpu/drm/i915/gem/i915_gem_clflush.c   |   2 +-
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    |   8 +-
 drivers/gpu/drm/i915/i915_sw_fence.c          |  10 +-
 drivers/gpu/drm/i915/i915_sw_fence.h          |   1 -
 drivers/gpu/drm/msm/msm_gem.c                 |  16 ++-
 drivers/gpu/drm/msm/msm_gem_submit.c          |   3 +-
 include/linux/dma-resv.h                      | 104 +++++++++++++++++-
 10 files changed, 142 insertions(+), 36 deletions(-)