upstream-submissions/vb2-dma-resv: linux-media submission notes

Submission notes for the kernel/vb2-dma-resv-rfc series. Captures:

- Pre-flight gates (full-tree compile-test, boot-test on ohm,
  runtime validation by uninstalling kwin-fourier and confirming
  chrome still plays through, syscall-count delta).
- The git send-email recipe with the full CC list (linux-media,
  V4L2 maintainers, hantro maintainer Tomasz Figa, dma-buf
  reviewers Sumit Semwal / Christian König / Jason Ekstrand,
  dri-devel, linux-rockchip, Heiko / Jeffy).
- Expected reviewer feedback (opt-in vs. auto-on, selftest
  request, signal-point semantics for async producers,
  Pick-to-LTS decision).
- Withdraw conditions if upstream is already doing this work or
  the design has a fundamental issue we didn't see.

This is the third upstream-submission draft in the campaign:

   upstream-submissions/qt6-base-fourier/   bugreports.qt.io draft
   upstream-submissions/kwin-fourier/       invent.kde.org MR draft
   upstream-submissions/vb2-dma-resv/       linux-media draft (this)
This commit is contained in:
2026-04-28 19:52:02 +00:00
parent 92b9c91bd3
commit d3564b061c
@@ -0,0 +1,112 @@
# linux-media submission notes — vb2 dma_resv release-fence series
The 3-patch RFC series at `marfrit-packages/kernel/vb2-dma-resv-rfc/`
is ready to send. Cover letter is filled in; patches apply cleanly
via `git am` against Linux 6.12 mainline; all kernel APIs verified.
## Pre-flight gates (re-stated)
1. **Full-tree compile-test** — apply the 3 patches to a complete
kernel checkout (not a sparse one), `make defconfig` + enable
`CONFIG_VIDEO_HANTRO=y` and `CONFIG_VIDEO_ROCKCHIP_RGA=y`,
then build. A focused
`make drivers/media/common/videobuf2/videobuf2-core.o
drivers/media/platform/verisilicon/hantro_v4l2.o
drivers/media/platform/rockchip/rga/rga-buf.o` is the minimal
safe-to-send threshold; full `make` is the higher confidence
bar.
2. **Boot-test on ohm** — install the patched kernel, verify
`lsmod` shows hantro_vpu and rockchip_rga loaded, run
`mpv --vo=drm --hwdec=v4l2request bbb_1080p30_h264.mp4` and
confirm playback still works (smoke test that we haven't
broken the existing buffer-state machine).
3. **Runtime validation** — install patched kernel,
`pacman -R kwin-fourier` so KWin's stock `watchDmaBuf` is
re-enabled, play `bbb_1080p30_h264.mp4` in chromium-fourier
under KDE Plasma. Should plays through end-to-end because the
fence the compositor waits on is now real (signals when hantro
completes). Compare CPU profile against the kwin-fourier-bypassed
baseline — should be equivalent or marginally lower.
4. **Capture syscall numbers** — `strace -c -p $(pgrep
kwin_wayland)` during a 60-second playback, before and after
the kernel patch (with stock KWin, kwin-fourier uninstalled).
Reports the ioctl reduction the patch enables (since
`EXPORT_SYNC_FILE` will now signal real fences instead of stub
ones, but the call itself remains). The reduction is greater
if the KWin upstream-shape patch is also in, but the kernel
patch alone is sufficient to make the existing KWin path
correct.
## Send command
After all four gates pass, format-patch and send:
```sh
cd <linux-tree-with-patches-applied>
git format-patch --cover-letter --base=auto -3 \
-o /tmp/vb2-dma-resv-out HEAD
# Verify cover letter has the right Subject and blurb (we already
# filled them in, but git format-patch will overwrite — so paste
# the canonical ones from kernel/vb2-dma-resv-rfc/0000-cover-letter.patch)
git send-email \
--to=linux-media@vger.kernel.org \
--cc='Mauro Carvalho Chehab <mchehab@kernel.org>' \
--cc='Hans Verkuil <hverkuil-cisco@xs4all.nl>' \
--cc='Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>' \
--cc='Tomasz Figa <tfiga@chromium.org>' \
--cc='Sumit Semwal <sumit.semwal@linaro.org>' \
--cc='Christian König <christian.koenig@amd.com>' \
--cc='Jason Ekstrand <jason@jlekstrand.net>' \
--cc='dri-devel@lists.freedesktop.org' \
--cc='linux-rockchip@lists.infradead.org' \
--cc='Heiko Stuebner <heiko@sntech.de>' \
--cc='Jeffy Chen <jeffy.chen@rock-chips.com>' \
/tmp/vb2-dma-resv-out/*.patch
```
Rationale for the CC list:
- `linux-media@vger.kernel.org` — primary list (V4L2 / videobuf2)
- Mauro / Hans / Ezequiel — V4L2 maintainers
- Tomasz Figa — hantro maintainer (Collabora / Chromium overlap)
- Sumit Semwal / Christian König / Jason Ekstrand — dma-buf
reviewers (this patch touches `dma_resv` semantics, so the
dma-buf folks need a look)
- `dri-devel` — graphics list, the consumer side of the fence
- `linux-rockchip@lists.infradead.org` — RK3xxx-specific feedback
- Heiko Stübner — Rockchip / arm64 maintainer
- Jeffy Chen — Rock-Chips media stack lead
## Expected feedback
- "Why opt-in vs auto-on for all CAPTURE queues?" — answered in
cover letter; willing to switch to auto-on if reviewers prefer
the audit burden.
- "Does this need a vb2 selftest?" — videobuf2 doesn't have
great in-tree dmabuf coverage; offer to add a minimal kselftest
if reviewers ask.
- "Is `vb2_buffer_done` the right signal point for asynchronous
drivers?" — for hantro and rga it is (they're synchronous m2m).
For drivers with async post-processing, may need a separate
hook; out of scope for this RFC.
- "Pick-to: stable trees?" — Maintainers will decide. The patch
is invasive enough that LTS backport may not be wanted; the
contract gap has been there since vb2's introduction so it's
not a regression fix.
## Withdraw conditions
If reviewers point out that:
- A driver in the wider tree already does this and we missed it
(the auto-on path would just naturally pick that up; switch
approach).
- vb2's `dma_resv` integration is being done in a different
upstream effort already (search lkml for `videobuf2 dma_resv`
before sending — should already be in the cover letter).
- The fence semantics are wrong for some driver class we didn't
consider (most likely image-sensor → CSI → ISP → output, where
the producer fence at the camera side and the user-visible
fence at the ISP output may be different).
…drop the series, write up the lessons, retry next cycle.