Files
kernel-agent/patches/subsystem/media/videobuf2/dma-resv-release-fence/README.md
T
claude-noether 18da673ccc phase 1: promote vb2_dma_resv RFC v2 + add ka-status + ampere as 2nd aarch64 host
Three changes that together flip kernel-agent from spec'd to operational
in the manual-orchestrated form. Real ka-* CLI verbs come in later phases;
this commit gets a first iteration through the pipeline and proves the
flow at the artifact level.

1. Promote vb2_dma_resv RFC v2 series into the scope-tagged tree

Markus iterated v2 locally on boltzmann (kernel-agent-bootstrap dir,
reaching linux-fresnel-fourier pkgrel=14). v2 attaches the producer
fence at device_run in slept-OK context per Dufresne's v1 review on
linux-media. The three patches land under
patches/subsystem/media/videobuf2/dma-resv-release-fence/:

  - 0004 (helper) — opt-in vb2 dma_resv producer-fence helper
  - 0005 (driver opt-in) — hantro device_run attach
  - 0006 (driver opt-in) — rockchip-rga device_run attach

Numbered 4/5/6 because the fresnel build PKGBUILD applies them after
the three 0001/0002/0003 PBP DTS patches; this directory's numbering
follows that apply-order, not the upstream lore series numbering.

README at the scope dir documents fleet eligibility, decision history,
and the v1 → v2 design pivot.

2. Update fleet/fresnel.yaml to include the v2 series

Pre-v2 manifest had a comment block 'Explicitly NOT included … vb2
dma-resv-release-fence … defer until v2 lands'. v2 has landed. Move
those three lines from 'excluded' to 'includes', annotate the decision
inline.

3. README updates

- Build hosts table: add ampere (CoolPi GenBook, RK3588 32GB) as
  secondary aarch64 host. Same uarch as boltzmann, on-demand wake via
  His. Gives the fleet a second native build target for when boltzmann
  is busy (e.g. carrying a firefox-fourier 4h build).
- 'Out of scope this round' bootstrap section: mark vb2_dma_resv as
  resolved 2026-05-15, keep panfrost IOMMU_CACHE deferred.

4. First ka-* CLI verb implemented: bin/ka-status

bash, ~120 lines. Reads fleet/*.yaml manifests, queries Gitea for
open [ka:*] issues, probes each reachable host for the installed
kernel-package version. Read-only — no sudo, no host writes. Picks
GITEA_TOKEN from /opt/herding/etc/claude-identities/<host>.creds or
env override.

Proves the agent's Gitea-API + manifest-parsing skeleton works
end-to-end without committing to a full ka-promote/build/install
implementation. Smoke-tested locally:

  $ bin/ka-status
  kernel-agent status (repo: marfrit/kernel-agent)
  open [ka:*] issues total: 1
  ══ fresnel ══
    manifest: arch=arm64 soc=rockchip/rk3399 board=pinebook-pro
    package:  linux-fresnel-fourier
    installed: host-down            # (fresnel is currently powered off)
    open ka-issues: (none for this host)

No PKGBUILD update in this PR — that lives in marfrit-packages and
ships as a sibling PR (the actual linux-fresnel-fourier-7.0-14 publish).
2026-05-15 15:32:00 +00:00

62 lines
2.8 KiB
Markdown

# vb2_dma_resv release-fence — RFC v2 series
Three-patch series that opts V4L2 m2m drivers into attaching real
producer fences to CAPTURE-side dmabufs, so implicit-sync GPU
consumers (Wayland / panfrost / panthor) wait correctly on the
producer's decode-completion rather than seeing the dma_buf core's
stub fence.
| Patch | Subject |
|---|---|
| `0004` | media: videobuf2: add opt-in dma_resv producer fence helper |
| `0005` | media: hantro: attach dma_resv release fence at device_run |
| `0006` | media: rockchip-rga: attach dma_resv release fence at device_run |
Numbered with the leading 4/5/6 because the fresnel build series carries
these alongside the 3 board-scoped `0001/0002/0003` Pinebook Pro DTS
patches; the numbers reflect apply-order in the PKGBUILD, not the
upstream lore series ordering (which starts at 1/4..4/4 with a cover).
## Status
**RFC v2.** Iterated on `lore.kernel.org/linux-media` after v1 was
rejected over the dma_fence finite-time contract gap and bus-locked
allocation issues. v2 attaches the fence at `device_run` instead of
QBUF, which puts allocation in slept-OK context (PM and clocks up,
job committed) — per Nicolas Dufresne's v1 review feedback.
Cover-letter reference: `marfrit/dmabuf-modifier-triage#3` (campaign
session that owns the upstream-targeting work; this directory ships
the build-tree-ready form for kernel-agent fleet consumption).
## Scope
`subsystem/media/videobuf2/` for the helper (0004), with two
driver opt-ins (0005/0006) shipped together because hantro and
rockchip-rga both need the helper to be useful on the RK35xx fleet.
Splitting 0005/0006 into `driver/hantro/` and `driver/rockchip-rga/`
was considered but rejected: they're a single contract series, and
their apply-order matters (0004 must precede). Series-as-unit beats
per-driver promote eligibility here.
## Fleet eligibility
- **fresnel** (RK3399 + hantro + Mali-G52): eligible. Carried in
`fleet/fresnel.yaml` since 2026-05-15 (decision flipped from "defer
to v2" to "include — v2 in this tree").
- **ohm** (RK3566 + hantro + Mali-G52): eligible. Was the original
reproducer for the green-frames symptom. Will be carried in
`fleet/ohm.yaml` once that manifest lands.
- **ampere** (RK3588 + hantro for some codecs): eligibility deferred —
RK3588 uses rkvdec2 for primary decode, hantro role is narrower.
Re-assess when `fleet/ampere.yaml` lands per issue #6.
- **boltzmann** (RK3588): same as ampere — defer.
## Upstream targeting
Not yet posted to linux-media in v2 form. Per `feedback_no_upstream.md`
the default is "build-tree only, wait for explicit ask". When/if the
upstream submission happens, this directory's `0004/0005/0006` are the
canonical source — they include the v2 commit headers (`PATCH RFC v2`,
`In-Reply-To` chain to the v1 cover-letter Message-Id).