## Iteration 34 — Phase 8 (close): Kernel cleanup → 7.0-14 SHIPPING Closes 2026-05-14, fifth campaign-day milestone. Strips iter33 VP8 diagnostic printks, ships clean kernel matching the 5/5 PASS state. ### Goal Remove the iter33 `vpu2_iter33_vp8` printk in `rockchip_vpu2_hw_vp8_dec.c` (and the dead `hantro_iter33_vp8` block in `hantro_g1_vp8_dec.c` that was added to the wrong function in iter33 first attempt). Ship clean 7.0-14. ### Result - `linux-fresnel-fourier 7.0-14` built + deployed. - 5/5 codec regression PASS on the clean kernel — libva == kdirect bit-exact for all 5 codecs (H264, HEVC, VP9, VP8, MPEG-2). 4/5 also bit-equal to SW reference (MPEG-2 differs from SW by ≤1 LSB IDCT precision artifact — same as iter33). - `dmesg | grep iter` empty — diagnostic printks gone. ### Devices on 7.0-14 (note: enumeration shifted from 7.0-13) | Driver | Video device | Media device | |---|---|---| | rockchip-rga | /dev/video0 | n/a | | rk3399-vpu-enc (encoder) | /dev/video1 | (shared with hantro) | | rk3399-vpu-dec (hantro) | /dev/video2 | /dev/media0 | | rkvdec | /dev/video3 | /dev/media1 | | uvcvideo (USB cam) | /dev/video4-5 | /dev/media2 | The /dev/video* and /dev/media* numbers shift between kernel boots based on probe order. Always re-probe via `v4l2-ctl --info` and `media-ctl -d /dev/mediaN -p` before hard-coding paths in test scripts. ### Substrate state at iter34 close Backend fork tip `7e0848d` (α-25 + α-29 + α-30 + iter29/30/33 env-gated DIAG probes; all three letter-fixes are load-bearing). Kernel `linux-fresnel-fourier 7.0-14` clean, no diagnostic printks. ### Open items (post iter34) 1. Backend env-gated DIAG cleanup (low priority): iter29 `LIBVA_HEVC_DUMP_SLICE_TAIL`, iter30 `LIBVA_TS_SCALE`, iter33 `LIBVA_VP8_DUMP_FRAME`. Env-gated, no behavior change without env set. Could clean up to keep ship-ready source minimal. Or leave for future regression debugging. 2. α-26 cosmetic revert (`decode_params->short_term_ref_pic_set_size = picture->st_rps_bits` — mis-routed; rkvdec doesn't use). Could revert to 0 to match V4L2 spec semantics. 3. Libva multi-device probe — let auto-detect support both rkvdec and hantro in a single session, instead of requiring LIBVA_V4L2_REQUEST_VIDEO_PATH override per codec. Architectural change in libva backend. ### Campaign FINAL state | Bug | Status | Fix | |---|---|---| | Bug 4 (H.264 keyframe-partial) | FIXED iter25 α-25 | rkvdec image_fmt pre-seed | | Bug 5 (HEVC libva all-zero CAPTURE) | FIXED iter25 + iter31 | α-25 + α-29 (st_rps_bits to slice_params) | | VP8 wrong output through libva | FIXED iter33 α-30 | prepend VP8 uncompressed header to OUTPUT | | MPEG-2 HW differs from SW | NOT A BUG | hantro IDCT precision, libva==kdirect bit-exact | | Kernel diagnostic printks | CLEANED iter32 + iter34 | 7.0-14 ship | | Codec | libva 10F sha | kdirect 10F sha | SW 10F sha | L==K | L==SW | |---|---|---|---|---|---| | H.264 | dd4f5f2d552c07bc | same | same | ✓ | ✓ | | HEVC | 108f925bb6cbb6c9 | same | same | ✓ | ✓ | | VP9 | cf35908ae0f9ab60 | same | same | ✓ | ✓ | | VP8 | d3231e5b6c0ee10b | same | same | ✓ | ✓ | | MPEG-2| 95c5905890c937d4 | same | 933b744134e47ba4 | ✓ | ~ (≤1 LSB diff) | **5/5 codecs PASS** the libva-vs-kdirect bit-exact contract. Campaign closed.