daedalus-v4l2-dkms: 79256dc -> 6ffe92b — fix kernel panic regression from #67 #69
Reference in New Issue
Block a user
Delete Branch "claude-noether/marfrit-packages:noether/daedalus-dkms-bump-6ffe92b"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kernel-only bump. Fixes the hard-reboot regression introduced by daedalus-v4l2 PR #7 (the split-completion design landed via marfrit-packages PR #67).
What broke
On higgs (Pi CM5, 6.18.29+rpt-rpi-2712), the first
mpv --hwdec=vaapi-copyplayback of a 720p H.264 clip after installingdaedalus-v4l2{,-dkms} 0.1.0+r28+g79256dc-1hard-rebooted the box. No persistent journal on this host, no recoverable trace.Root cause
device_runpreviously left both src and dst inm2m_ctx's rdy_queue between pickup andbuf_done, relying on the oldv4l2_m2m_buf_done_and_job_finishhelper to remove them at completion. The new split-completion path (HAS_PIXELS/SRC_CONSUMEDseparate) callsv4l2_m2m_job_finishonSRC_CONSUMEDeven when the dst_buf is still parked.job_finishmoves the m2m_ctx back to IDLE; the scheduler dispatches the nextdevice_run;v4l2_m2m_next_dst_bufreturns the head of the rdy_queue — which is still our parked dst_buf. Two inflight entries on the samevb2_buffer. LaterHAS_PIXELStriggersv4l2_m2m_dst_buf_remove_by_buf→list_delon an already-detachedlist_head→ memory corruption, panic.Fix (daedalus-v4l2#8, merged at 6ffe92b)
device_runnow callsv4l2_m2m_src_buf_remove_by_buf+v4l2_m2m_dst_buf_remove_by_bufas soon as it has peeked the buffers and all validation passes, BEFORE adding them to the inflight list. After that, the daemon owns both halves; the m2m scheduler can't re-issue them. Completion path drops the redundant_remove_by_bufcalls.Matches the amphion
vdec.c/venc.cpattern.Wire compat
DAEDALUS_PROTO_VERSIONstays at 1. The daemon doesn't need to bump —daedalus-v4l2 0.1.0+r28+g79256dc-1(already deployed on higgs) is wire-compatible with this new DKMS module.apt install daedalus-v4l2-dkmsalone is sufficient.Deployment on higgs
Refs