3-patch kernel RFC. Sent to linux-media + dri-devel + linaro-mm-sig + linux-rockchip + linux-arm-kernel + linux-kernel on 2026-04-29 19:53 UTC. Index: fourier.
20260429195306.239666-1-mfritsche@reauktion.de. Thread on lore: https://lore.kernel.org/linux-media/20260429195306.239666-1-mfritsche@reauktion.de/
vb2 currently does not propagate V4L2 producer state into the dmabuf
dma_resv exclusive fence. A downstream consumer (e.g. the KWin
compositor polling a dmabuf for completion) cannot rely on the fence
to indicate “decode finished, frame ready”. The compositor instead
either spins on stub fences (the bug kwin-fourier 0001 works around)
or has to do the wait the hard way at compositor level.
vb2_buffer_attach_release_fence()buf_queue — see review notes for why this is wrong)
3d8deeb15581b754e4c061d4c4a13657aa08bc3c.camel@ndufresne.ca,
2026-04-29 21:22 UTC.
buf_queue (CAPTURE side) publishes it before OUTPUT bitstream + parameters + request are guaranteed populated. A user that starves the OUTPUT queue leaves the fence un-armed forever. Violates the dma_fence finite-time-signal contract. Same wall Padovan's earlier explicit-sync series hit.DMA_BUF_IOCTL_EXPORT_SYNC_FILE as the kick IOCTL, or attaching an out-fence to media_request. Cites DW100's m2m-to-request conversion as a precedent for that path being approachable.
4c63c81b-14f7-4e6b-a733-2f98e6055ca8@amd.com, 2026-04-30 06:51 UTC,
in reply to Nicolas.
dma_fence_begin_signalling() / dma_fence_end_signalling() primitives, run with lockdep enabled.Net of the two reviews: not a NACK. A directed redirect with a permission slip (“behind a flag”) for the fourier use case. v2 sketch + prior-art reference saved in the gitea repo at:
upstream-submissions/vb2-dma-resv/v2-cover-letter-sketch.mdupstream-submissions/vb2-dma-resv/v2-prior-art-references.mdbuf_queue to m2m device_run. Hantro: insert at drivers/media/platform/verisilicon/hantro_drv.c line 187 (between v4l2_m2m_buf_copy_metadata and ctx→codec_ops→run). RGA: lift v4l2_m2m_next_*_buf + the fence-attach above the ctrl_lock spinlock at drivers/media/platform/rockchip/rga/rga.c line 41 — the helper's dma_resv_lock is sleepable.vb2_queue::supports_release_fences bool, set in queue init.CONFIG_VIDEOBUF2_RELEASE_FENCES, default n. Bool, not tristate.dma_fence_begin/end_signalling pairs around publish + signal paths. Validated by full bbb 1080p30 chromium playback under CONFIG_PROVE_LOCKING=y CONFIG_LOCKDEP=y.[PATCH RFC v2]. Attach-point move is non-trivial; one more design round at RFC is cheap.daniel.vetter@ffwll.ch) added; –in-reply-to the v1 cover so v2 threads under v1.media_request out-fence path (Nicolas's preferred long-term direction). Bigger redesign; runs in parallel with this opt-in producer-fence series and does not conflict.kwin-fourier 1:6.6.4-3) skips the watchDmaBuf wait entirely. Pragmatic fix; works because no real fence ever lands today.watchDmaBuf wait completes correctly because the producer fence now signals when hantro completes.
lore-watch.sh only matches messages where mfritsche@reauktion.de appears in
headers. Mid-thread replies that drop the address (the common case for
review threads) are NOT caught. Both 2026-04-30 replies were missed.
Manual walk:
ssh noether git clone --bare --depth 500 \ https://lore.kernel.org/linux-media/1 \ ~/.local/state/lore-watch/linux-media-pi-1.git cd ~/.local/state/lore-watch/linux-media-pi-1.git git fetch --depth 1000 origin git log --all --format='%H %ci %s' | \ grep -i 'videobuf2.*dma_resv\|dma_resv.*videobuf2' git show <sha>:m
linux-media's live public-inbox epoch is 1 as of 2026-04-30; probe higher numbers if no hits. Anubis blocks lore HTTP; git pack-protocol bypasses it cleanly.
kernel/vb2-dma-resv-rfc/ in gitea/marfrit-packagesupstream-submissions/vb2-dma-resv/lkml-submission-notes.mdupstream-submissions/vb2-dma-resv/v2-cover-letter-sketch.md, v2-prior-art-references.md