From a0be2dcc9f6248c2c9d1d95a6db54a714e4954ef Mon Sep 17 00:00:00 2001 From: claude-noether Date: Thu, 21 May 2026 13:56:42 +0200 Subject: [PATCH] =?UTF-8?q?daedalus-v4l2-dkms:=2079256dc=20->=206ffe92b=20?= =?UTF-8?q?=E2=80=94=20fix=20kernel=20panic=20from=20#7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kernel-only bump. Fixes the hard-reboot regression introduced by the daedalus-v4l2#7 split-completion design and observed on higgs (Pi CM5) during the first mpv vaapi-copy playback of 720p H.264: device_run now removes src + dst from m2m_ctx's rdy_queue at the moment it picks them up, not at buf_done time. Without this, a parked dst_buf (waiting for libavcodec's display-order release) stayed in the rdy_queue and got re-picked by the next device_run after SRC_CONSUMED's job_finish released the scheduler — two inflight entries on the same vb2_buffer, later HAS_PIXELS calls list_del on an already-detached list_head, panic. DAEDALUS_PROTO_VERSION stays at 1 — daemon (userspace daedalus-v4l2) need NOT bump in lockstep with this DKMS update. The existing daedalus-v4l2 0.1.0+r28+g79256dc is wire-compatible with daedalus-v4l2-dkms 0.1.0+r30+g6ffe92b. Refs: * https://git.reauktion.de/reauktion/daedalus-v4l2/pulls/8 --- arch/daedalus-v4l2-dkms/PKGBUILD | 17 ++++++++++------- debian/daedalus-v4l2-dkms/build-deb.sh | 6 +++--- debian/daedalus-v4l2-dkms/debian/changelog | 22 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/arch/daedalus-v4l2-dkms/PKGBUILD b/arch/daedalus-v4l2-dkms/PKGBUILD index b26432949..75f52969c 100644 --- a/arch/daedalus-v4l2-dkms/PKGBUILD +++ b/arch/daedalus-v4l2-dkms/PKGBUILD @@ -16,14 +16,17 @@ pkgname=daedalus-v4l2-dkms _module=daedalus_v4l2 -# Same pin as arch/daedalus-v4l2 — keep kernel module + daemon -# bit-versioned together so the chardev wire protocol stays in sync. -# PROTO_VERSION 0 → 1 at this pin (H.264 B-frame reorder fix); must -# install both packages atomically. -_commit=79256dc7ef41f83873ca9c23db20f5888858e65d +# Kernel module-only bump to 6ffe92b — fixes the panic regression +# introduced by 79256dc's split-completion design (daedalus-v4l2#8): +# claim src/dst from m2m's rdy_queue at device_run time, not at +# buf_done; otherwise a parked dst_buf gets re-picked by the next +# device_run after SRC_CONSUMED's job_finish releases the scheduler. +# PROTO_VERSION stays at 1; daedalus-v4l2 (daemon) need NOT bump in +# lockstep — daemon ABI is unchanged. +_commit=6ffe92bcacccbf228c398a10c21a6818f07c67d2 -pkgver=0.1.0.r28.79256dc -pkgrel=1 # reset for new upstream pin (79256dc — H.264 B-frame reorder fix) +pkgver=0.1.0.r30.6ffe92b +pkgrel=1 # reset for new upstream pin (6ffe92b — claim src/dst at device_run, fixes #8 panic) pkgdesc="V4L2 stateless decoder shim kernel module (DKMS) — Pi 5 / CM5" arch=('any') url="https://git.reauktion.de/reauktion/daedalus-v4l2" diff --git a/debian/daedalus-v4l2-dkms/build-deb.sh b/debian/daedalus-v4l2-dkms/build-deb.sh index b10f4e7f8..927c29a8a 100755 --- a/debian/daedalus-v4l2-dkms/build-deb.sh +++ b/debian/daedalus-v4l2-dkms/build-deb.sh @@ -14,9 +14,9 @@ # Sibling userspace package: ../daedalus-v4l2/build-deb.sh set -euo pipefail -UPSTREAM_COMMIT=79256dc7ef41f83873ca9c23db20f5888858e65d -PKGVER=0.1.0+r28+g79256dc -PKGREL=1 # reset for new upstream pin (79256dc — H.264 B-frame reorder fix); still carries the #64 multi-kernel postinst fix +UPSTREAM_COMMIT=6ffe92bcacccbf228c398a10c21a6818f07c67d2 +PKGVER=0.1.0+r30+g6ffe92b +PKGREL=1 # reset for new upstream pin (6ffe92b — claim src/dst at device_run, fixes #8 panic); still carries the #64 multi-kernel postinst fix MODULE_NAME=daedalus_v4l2 HERE=$(dirname "$(readlink -f "$0")") diff --git a/debian/daedalus-v4l2-dkms/debian/changelog b/debian/daedalus-v4l2-dkms/debian/changelog index f825493e8..1f745d752 100644 --- a/debian/daedalus-v4l2-dkms/debian/changelog +++ b/debian/daedalus-v4l2-dkms/debian/changelog @@ -1,3 +1,25 @@ +daedalus-v4l2-dkms (0.1.0+r30+g6ffe92b-1) bookworm trixie; urgency=medium + + * Bump to 6ffe92b — fixes the kernel panic regression introduced + by 79256dc's split-completion design (closes daedalus-v4l2#8). + `device_run` now removes both src + dst from `m2m_ctx`'s + rdy_queue at pickup time, not at `buf_done` time. Without + this, after `SRC_CONSUMED`'s `job_finish` released the m2m + scheduler, the NEXT `device_run` saw the still-queued parked + dst_buf and paired it with a fresh src — two inflight entries + referencing the same vb2_buffer, the later `HAS_PIXELS` + triggered list_del on an already-detached list_head, smashing + the rdy_queue → hard reboot on Pi CM5 during `mpv vaapi-copy` + playback of 720p H.264 (2026-05-21). + * Wire protocol unchanged — DAEDALUS_PROTO_VERSION stays at 1. + Daemon (userspace daedalus-v4l2 package) need NOT bump in + lockstep with this DKMS update; the existing + daedalus-v4l2 0.1.0+r28+g79256dc is wire-compatible with + daedalus-v4l2-dkms 0.1.0+r30+g6ffe92b. + * Carries forward the #64 multi-kernel postinst fix. + + -- Markus Fritsche Thu, 21 May 2026 14:00:00 +0000 + daedalus-v4l2-dkms (0.1.0+r28+g79256dc-1) bookworm trixie; urgency=medium * Bump to 79256dc — H.264 B-frame display reorder fix (closes