Skip to content

dma-fence: Deadline awareness

Rob Clark dri-devel intel-gfx linux-arm-msm linux-doc linux-media lkml 8 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v9 posting 2/23 patches 1 replyApplied
  2. v10 Latest15 patches 33 repliesIn review
  3. v9 posting 1/215 patches 19 repliesSuperseded
Earlier versions · 5
VersionPostedPatchesRepliesStatus
v816 patches3 repliesSuperseded
v715 patches12 repliesSuperseded
v615 patches0 repliesSuperseded
v514 patches5 repliesSuperseded
v414 patches78 repliesSuperseded

Patches in v10 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/15dma-buf/dma-fence: Add deadline awarenessDocumentation/driver-api/dma-buf.rst drivers/dma-buf/dma-fence.c include/linux/dma-fence.h+87 -017 replies
2/15dma-buf/fence-array: Add fence deadline supportdrivers/dma-buf/dma-fence-array.c+11 -00 replies
3/15dma-buf/fence-chain: Add fence deadline supportdrivers/dma-buf/dma-fence-chain.c+12 -00 replies
4/15dma-buf/dma-resv: Add a way to set fence deadlinedrivers/dma-buf/dma-resv.c include/linux/dma-resv.h+24 -00 replies
5/15dma-buf/sync_file: Surface sync-file uABIDocumentation/driver-api/dma-buf.rst include/uapi/linux/sync_file.h+23 -240 replies
6/15dma-buf/sync_file: Add SET_DEADLINE ioctldrivers/dma-buf/dma-fence.c drivers/dma-buf/sync_file.c include/uapi/linux/sync_file.h+43 -10 replies
7/15dma-buf/sw_sync: Add fence deadline supportdrivers/dma-buf/sw_sync.c drivers/dma-buf/sync_debug.h+83 -01 reply
8/15drm/scheduler: Add fence deadline supportdrivers/gpu/drm/scheduler/sched_fence.c drivers/gpu/drm/scheduler/sched_main.c include/drm/gpu_scheduler.h+64 -10 replies
9/15drm/syncobj: Add deadline support for syncobj waitsdrivers/gpu/drm/drm_syncobj.c include/uapi/drm/drm.h+68 -134 replies
10/15drm/vblank: Add helper to get next vblank timedrivers/gpu/drm/drm_vblank.c include/drm/drm_vblank.h+45 -90 replies
11/15drm/atomic-helper: Set fence deadline for vblankdrivers/gpu/drm/drm_atomic_helper.c+37 -08 replies
12/15drm/msm: Add deadline based boost supportdrivers/gpu/drm/msm/msm_fence.c drivers/gpu/drm/msm/msm_fence.h+94 -00 replies
13/15drm/msm: Add wait-boost supportdrivers/gpu/drm/msm/msm_drv.c drivers/gpu/drm/msm/msm_gem.c include/uapi/drm/msm_drm.h+25 -60 replies
14/15drm/msm/atomic: Switch to vblank_start helperdrivers/gpu/drm/msm/disp/dpu1/dpu_kms.c drivers/gpu/drm/msm/msm_atomic.c drivers/gpu/drm/msm/msm_kms.h+5 -260 replies
15/15drm/i915: Add deadline based boost supportdrivers/gpu/drm/i915/i915_request.c+20 -00 replies

Reviews trailers per patch

11 of 15 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchChristian KönigPekka PaalanenBagas SanjayaLuben TuikovDaniel VetterMario KleinerMatt TurnerTvrtko UrsulinDmitry Baryshkov
SeriesR-b
1/15R-b A-b R-b
2/15R-b
3/15R-b
4/15R-b
5/15A-b
6/15A-b
7/15R-b A-b
8/15A-b
9/15R-b
10/15R-b
11/15R-b T-b
12/15
13/15
14/15
15/15

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 9 reviewers.

Read the v10 thread

Cover letter [PATCH v10 00/15] dma-fence: Deadline awareness

From: Rob Clark <[email protected]>

This series adds a deadline hint to fences, so realtime deadlines such as vblank can be communicated to the fence signaller for power/ frequency management decisions.

This is partially inspired by a trick i915 does, but implemented via dma-fence for a couple of reasons:

1) To continue to be able to use the atomic helpers
2) To support cases where display and gpu are different drivers

This iteration adds a dma-fence ioctl to set a deadline (both to support igt-tests, and compositors which delay decisions about which client buffer to display), and a sw_sync ioctl to read back the deadline. IGT tests utilizing these can be found at:

https://gitlab.freedesktop.org/robclark/igt-gpu-tools/-/commits/fence-deadline

v1: https://patchwork.freedesktop.org/series/93035/
v2: Move filtering out of later deadlines to fence implementation
to avoid increasing the size of dma_fence
v3: Add support in fence-array and fence-chain; Add some uabi to
support igt tests and userspace compositors.
v4: Rebase, address various comments, and add syncobj deadline
support, and sync_file EPOLLPRI based on experience with perf/ freq issues with clvk compute workloads on i915 (anv)
v5: Clarify that this is a hint as opposed to a more hard deadline
guarantee, switch to using u64 ns values in UABI (still absolute CLOCK_MONOTONIC values), drop syncobj related cap and driver feature flag in favor of allowing count_handles==0 for probing kernel support.
v6: Re-work vblank helper to calculate time of _start_ of vblank,
and work correctly if the last vblank event was more than a frame ago. Add (mostly unrelated) drm/msm patch which also uses the vblank helper. Use dma_fence_chain_contained(). More verbose syncobj UABI comments. Drop DMA_FENCE_FLAG_HAS_DEADLINE_BIT.
v7: Fix kbuild complaints about vblank helper. Add more docs.
v8: Add patch to surface sync_file UAPI, and more docs updates.
v9: Drop (E)POLLPRI support.. I still like it, but not essential and
it can always be revived later. Fix doc build warning.
v10: Update 11/15 to handle multiple CRTCs

Rob Clark (15):
dma-buf/dma-fence: Add deadline awareness dma-buf/fence-array: Add fence deadline support dma-buf/fence-chain: Add fence deadline support dma-buf/dma-resv: Add a way to set fence deadline dma-buf/sync_file: Surface sync-file uABI dma-buf/sync_file: Add SET_DEADLINE ioctl dma-buf/sw_sync: Add fence deadline support drm/scheduler: Add fence deadline support drm/syncobj: Add deadline support for syncobj waits drm/vblank: Add helper to get next vblank time drm/atomic-helper: Set fence deadline for vblank drm/msm: Add deadline based boost support drm/msm: Add wait-boost support drm/msm/atomic: Switch to vblank_start helper drm/i915: Add deadline based boost support

Rob Clark (15):
dma-buf/dma-fence: Add deadline awareness dma-buf/fence-array: Add fence deadline support dma-buf/fence-chain: Add fence deadline support dma-buf/dma-resv: Add a way to set fence deadline dma-buf/sync_file: Surface sync-file uABI dma-buf/sync_file: Add SET_DEADLINE ioctl dma-buf/sw_sync: Add fence deadline support drm/scheduler: Add fence deadline support drm/syncobj: Add deadline support for syncobj waits drm/vblank: Add helper to get next vblank time drm/atomic-helper: Set fence deadline for vblank drm/msm: Add deadline based boost support drm/msm: Add wait-boost support drm/msm/atomic: Switch to vblank_start helper drm/i915: Add deadline based boost support

 Documentation/driver-api/dma-buf.rst    | 16 ++++-
 drivers/dma-buf/dma-fence-array.c       | 11 ++++
 drivers/dma-buf/dma-fence-chain.c       | 12 ++++
 drivers/dma-buf/dma-fence.c             | 60 ++++++++++++++++++
 drivers/dma-buf/dma-resv.c              | 22 +++++++
 drivers/dma-buf/sw_sync.c               | 81 +++++++++++++++++++++++++
 drivers/dma-buf/sync_debug.h            |  2 +
 drivers/dma-buf/sync_file.c             | 19 ++++++
 drivers/gpu/drm/drm_atomic_helper.c     | 37 +++++++++++
 drivers/gpu/drm/drm_syncobj.c           | 64 +++++++++++++++----
 drivers/gpu/drm/drm_vblank.c            | 53 +++++++++++++---
 drivers/gpu/drm/i915/i915_request.c     | 20 ++++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 15 -----
 drivers/gpu/drm/msm/msm_atomic.c        |  8 ++-
 drivers/gpu/drm/msm/msm_drv.c           | 12 ++--
 drivers/gpu/drm/msm/msm_fence.c         | 74 ++++++++++++++++++++++
 drivers/gpu/drm/msm/msm_fence.h         | 20 ++++++
 drivers/gpu/drm/msm/msm_gem.c           |  5 ++
 drivers/gpu/drm/msm/msm_kms.h           |  8 ---
 drivers/gpu/drm/scheduler/sched_fence.c | 46 ++++++++++++++
 drivers/gpu/drm/scheduler/sched_main.c  |  2 +-
 include/drm/drm_vblank.h                |  1 +
 include/drm/gpu_scheduler.h             | 17 ++++++
 include/linux/dma-fence.h               | 22 +++++++
 include/linux/dma-resv.h                |  2 +
 include/uapi/drm/drm.h                  | 17 ++++++
 include/uapi/drm/msm_drm.h              | 14 ++++-
 include/uapi/linux/sync_file.h          | 59 +++++++++++-------
 28 files changed, 640 insertions(+), 79 deletions(-)
Signature · 1 line
2.39.2