Updates both flavors with the n_channels > 1 refinement (was > 0).
The original guard refused ALL 5 GHz scans which broke 5 GHz
association via NM band=a profiles (NM iterates freq_list per
channel, single-channel scans were also refused).
Tightened: only multi-channel 5 GHz scans (the per-band-sweep
that triggers the firmware storm) are refused; single-channel
5 GHz scans pass through so NM/wpa_supplicant can find and
associate to 5 GHz BSSes.
Verified on ohm with locally-built pkgrel=3 (srcversion
BEB625FA7443171EA8D55F7): associated to 5 GHz BSSID
c0:25:06:e6:5b:33 on 5240 MHz / ch.48, 150 Mbit/s MCS 7
40MHz short-GI; Pattern A still 0 since boot.
Patch file is now a concatenation of two commits from
marfrit/bes2600-dkms bes2600/scan-filter-5ghz branch:
093a503 (original Patch I)
8cd10f4 (this refinement)
patch -Np1 applies them sequentially -> net effect = single squash.
Refs: besser#1 (closed), PKGBUILD update at marfrit/besser
claude-noether-14 commit 122582e (pkgrel=3 deployed to ohm
on 2026-05-18 same session).
Patch I closes besser#1 — the wsm_generic_confirm 0x0007 dmesg storm.
One-line guard in bes2600_hw_scan() refuses the 5 GHz iteration of
mac80211's per-band hw_scan loop with -EOPNOTSUPP, so the firmware
never sees the scan request that would be rejected with status 2 →
-EINVAL cascade. Phase 7 verified 2026-05-18 on ohm running pkgrel=2:
Pattern A 14.3/h → 0/h over 30-min window, no WARN/BUG, single-band
2.4 GHz scans still return BSSes cleanly.
Two flavors imported (scan-filter-5ghz and scan-filter-5ghz-danctnix)
matching the convention of other bes2600 series — the code path
doesn't touch timer APIs so the two are byte-identical for now;
flavor separation is kept to preserve consistency in ohm.yaml.
The arm64 scs-arm-neon-build-fix series is a build-environment
workaround: GCC 15.2.1 strictly validates that -fsanitize=shadow-
call-stack requires -ffixed-x18, and arm_neon.h's #pragma target/
push/pop blocks lose x18 fixing inside the wrapped section. The
Makefile tweak re-adds -ffixed-x18 explicitly for xor-neon.o. It's
a no-op when SCS is off (current pkgrel=2 ohm config) and unblocks
SCS=y once GCC upstream is fixed.
ohm.yaml gains a CONFIG_SHADOW_CALL_STACK=n config override with a
pointer to besser#20 (the re-enable tracking issue) so future
manifest-driven kconfig generation honors the workaround without
silently dropping it.
Source-of-truth commit for Patch I:
marfrit/bes2600-dkms branch bes2600/scan-filter-5ghz sha 093a503
PKGBUILD-side (already deployed to ohm via pkgrel=2):
marfrit/besser branch claude-noether-14 sha ae175f9
Refs: besser#1 (closed), besser#20, kernel-agent#5
Reference the 3 patches imported in the previous commit under the
scope-tagged patch list. Apply order is strict (0001 → 0002 → 0003).
Verified 2026-05-18 via the arch_vp9_test extlinux boot on ampere:
- VP9F enumerates on rkvdec /dev/video2
- kdirect decode bit-exact vs libavcodec SW reference at -ss 30
- libva decode (firefox/chromium-style consumer) also bit-exact
- vainfo lists VAProfileVP9Profile0 (iter38 multi-device probe auto-picks)
- All three paths agree on sha
c8624d7c42db66525f53a02a515bc38d0a17ef39f692660cc7bebb1e2d2e1b48
Removes VP9 from the "explicitly not included" comment block — issue
#12 closes with this change.
Also: AV1 stays out-of-scope per issue #6 ask 3 (kernel side fine via
the existing av1-vpu-dec node; backend just needs the 4th-fd
generalization tracked in libva-v4l2-request-fourier#2).
The next linux-ampere-fourier package rebuild from this manifest
will pick up VP9 automatically; ampere's running
7.0.0-rc3-vp9-test+ kernel already has these patches via the
operator's manual build session today.
Three patches from D.V.A.B. Sarma adding VP9 decode support to the
VDPU381 variant of rkvdec (RK3588 generation). Combined ~1500 LOC,
5 new files in drivers/media/platform/rockchip/rkvdec/.
Provenance: github.com/dvab-sarma/android_kernel_rk_opi branch
add-rkvdec-vdpu381-vp9-v8. Collabora's blog cites the work but it
hasn't reached linux-media patchwork yet (Collabora: "v1 series
needs to be sent for review soon"). Casanova's underlying
VDPU381/VDPU383 H.264+HEVC base IS in mainline 7.0 release.
Tested by author on Orange Pi 5 Pro (RK3588) with AOSP 16 + FFMPEG,
Profile 0 + Profile 2.
Tested in our fleet 2026-05-18: cherry-picks cleanly on top of
ampere-minimal-devices, full kernel build (KERNELRELEASE
7.0.0-rc3-vp9-test+) succeeds clean with GCC 16.1.1. Image + DTB +
modules + initramfs installed under -vp9-test+ suffix on ampere
without touching the running -devices+ kernel; new extlinux label
arch_vp9_test added (default unchanged at arch_devices). End-to-end
VP9 decode verification pending operator reboot into the new label.
Patches NOT yet referenced from fleet/ampere.yaml — that bump is
the operator's call (manifest preamble currently scopes VP9 out per
issue #6). Once verified, ampere.yaml can add these three under the
scope-tagged patch list in apply order 0001→0002→0003.
Cross-reference: marfrit/kernel-agent#12.
CLI verb table updates:
- ka-promote: new signature `<host>` (read fleet/<host>.yaml → cumulative.patch +
manifest.lock). Marked [bin/ka-promote — implemented Phase 6, issue #22].
- ka-import: new verb name carrying the original ka-promote semantic
(`<campaign> <patch-or-glob> --to <scope>`, promote patches into the
scope-tagged tree). Unimplemented; today this is the regular git+PR workflow.
- ka-build / ka-install: signatures elaborated, marked as the next two verbs
to implement (issues TBD).
Bootstrap reference build section:
- Header reframed: "before ka-* verbs existed" → ka-promote replaces step #1
as of 2026-05-18.
- Baseline corrected: torvalds/linux not mmind/linux-rockchip (mmind doesn't
ship plain v7.0 tag — caught in ka-promote Phase 3, fleet/fresnel.yaml fixed
in the implementation commit).
- "Manual substitute" table gets a Status column. Row for ka-promote split
into the old "import" semantic vs the new "manifest resolve" semantic, with
the latter marked **automated 2026-05-18**.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add coolpi-cm5-genbook DTS patch that mirrors vendor coolpi-kernel
audio routing for the internal microphone:
routing = "MIC1", "Main Mic",
"MIC2", "Headset Mic";
Necessary-but-not-sufficient: the ES8316 RX aif_out widget power-up
chain is still broken on mainline (separate issue, not addressed
here); a future codec/audio-graph-card driver fix can complete the
capture path once the topology is correct.
Include in ampere fleet manifest.
Adds fleet/ohm.yaml referencing the bes2600 series mirrored in #2 →
patches/driver/bes2600/. Establishes the manifest shape for ohm
(PineTab2 / RK3566 + BES2600).
Includes list defaults to the -danctnix sibling variants (ohm runs the
DanctNIX kernel base), 17 series total. The pure-mainline non-danctnix
variants are NOT included — they exist for vanilla consumers that ohm
doesn't currently have.
What's NOT in this commit (blockers for #5 full closure):
1. PKGBUILD migration to marfrit-packages/arch/linux-pinetab2-danctnix-besser/
PENDING the kernel-agent template renderer (b2sum regen, pkgrel
bump, cumulative-patch generation per build job).
2. Cumulative-patch ordering field (apply_order). Current order on
boltzmann is A,B,C v3,F,G,D,E,C2,c5.x,c6.x,c7,H — NOT alphabetical.
Need explicit apply_order: [...] in this manifest before
ka-promote can replace the hand-managed cumulative.
3. Config-by-manifest. The .config still lives next to the existing
boltzmann PKGBUILD. Migrate when kconfig-by-manifest lands.
4. Orphan retirement (~/src/besser/danctnix-besser-pkgbuild/ on
boltzmann). Surface to fourier campaign for working-state
migration BEFORE deletion. See besser #17 for the regression
that the orphan caused.
All four blockers documented as TODO at the bottom of fleet/ohm.yaml.
Issue #5 stays OPEN pending these.
Generated-by: Claude Opus 4.7 <claude@reauktion.de>
Mirrors all 30 BES2600 patch series from marfrit/besser/patches/ into
the kernel-agent scope-tagged tree under patches/driver/bes2600/.
15 base series + 15 -danctnix siblings = 45 .patch files including
cover letters.
Per-series promotion eligibility tracked in the README (default
unset → ka-promote asks before including in a build). Markus to
update as series mature.
DKMS-to-in-tree transition path documented (drop bes2600-dkms
once series lands in mainline / DanctNIX base).
Cumulative-patch ordering caveat captured: existing order is NOT
alphabetical (A,B,C v3,F,G,D,E,C2,c5.x,c6.x,c7,H). ka-promote
needs an explicit apply_order field, not a series-name sort.
Surface when fleet/ohm.yaml lands in #5.
Acceptance criteria from #2:
[x] All series present under driver/bes2600/
[x] Promotion eligibility per series (table in README, defaults unset for Markus to fill)
[ ] Manifest for ohm references driver:bes2600 scope (deferred to #5)
[x] DKMS-to-in-tree transition path documented
Generated-by: Claude Opus 4.7 <claude@reauktion.de>
Closes the migration started in #8. The 6 active ampere patches (pwm15,
pwm-fan, RK806 power-controller, speaker, USB-C PD, lid switch) landed
in #8 under soc/rockchip/rk3588/, module/coolpi-cm5/, and
board/coolpi-cm5-genbook/. This commit migrates the remaining 3:
* `0006 arm64 Kconfig: do not select HAVE_GCC_PLUGINS`
→ patches/arch/arm64/. NOT for upstream — local build workaround;
README explains the proper fix is gcc-plugin-devel install.
* `0009 Bluetooth: btrtl: make RTL_SEC_PROJ read non-fatal`
→ patches/driver/bluetooth/btrtl/. Benefits ampere (RTL8852BE) and
boltzmann (same M.2 family). Cross-host driver/ scope.
* `0010 gpio/drm/mfd/input/dts: fix suspend/resume and wakeup on RK3588`
→ SPLIT into 5 scope-tagged sub-patches as the issue required
("0010 split into ≥2 patches by scope"):
- patches/driver/gpio/rockchip/0010a-gpio-rockchip-propagate-irq_set_wake-to-parent-GIC.patch
- patches/driver/gpu/drm/bridge/analogix/0010b-drm-bridge-analogix-dp-disable-IRQ-before-clock-gating-in-suspend.patch
- patches/driver/mfd/rk8xx/0010c-mfd-rk8xx-spi-add-PM-ops-and-shutdown-callback.patch
- patches/driver/input/misc/0010d-input-rk805-pwrkey-register-wake-IRQ-via-dev_pm_set_wake_irq.patch
- patches/board/coolpi-cm5-genbook/0010e-arm64-dts-rockchip-rk3588-coolpi-cm5-genbook-add-NPU-power-domain-and-touchpad-wakeup.patch
The split is byte-identical to the original 0010 (verified on
decompose-0010 branch in marfrit/linux-rk3588-marfrit — sha256 of
the combined diff matches the monolithic 0010 commit).
All 0010 sub-patches marked WIP in their README and explicitly NOT
added to fleet/ampere.yaml includes — suspend/resume thread is still
open and Markus hasn't decided the upstream-targeting shape.
READMEs added at each new directory documenting per-patch context.
Acceptance criteria from #1:
[x] Each patch lives at narrowest correct scope
[x] 0010 split into ≥2 patches by scope (5 sub-patches)
[x] Per-host manifest for ampere references the right scopes + explicit includes (already #8)
[ ] github.com/marfrit/misc_patches retained as historical mirror — Markus to decide
[x] working-tree dirty state on boltzmann reconciled (decompose-0010 + ampere-minimal-devices branches captured)
Generated-by: Claude Opus 4.7 <claude@reauktion.de>
2026-05-16 bisect found that linux-rk3588-marfrit @ f8f3ad9 (the
previous baseline.ref) black-screens ampere — eDP connector reports
connected/enabled/dpms On + SDDM starts + backlight on, but the panel
shows no pixels. Decomposing the suspend/resume patch 0010 into 5
atomic sub-commits and reverting all of them did NOT recover display,
ruling out 0010 as the offender.
The 6 patches already listed in fleet/ampere.yaml's includes apply
cleanly on top of v7.0-rc3 mainline and produce a kernel that boots
with working display + power-off. That's the verified-working baseline,
captured here.
Regression source is in one of the 12 remaining commits f8f3ad9 has on
top of v7.0-rc3. Top suspect: 55d1b3dcc05e "clk: rockchip: rk3588:
Drop CLK_SET_RATE_PARENT from DCLK_VOP2_SRC" (touches display
controller clock parent rate). Bisect campaign separately.
For consumers who want a ready-to-fetch ref instead of
patches-on-mainline, the verified-working tree is on
git.reauktion.de/marfrit/linux-rk3588-marfrit @ ampere-minimal-devices
(7c241f2e2835).
No change to the includes list — same 6 patches as #8, just retargeted
to a baseline they can actually be applied to.
Generated-by: Claude Opus 4.7 <claude@reauktion.de>
Brings the second customized fleet host into kernel-agent's
scope-tagged tree. Sibling PR coming in marfrit-packages with the
arch/linux-ampere-fourier/ PKGBUILD + flat patch + config + extlinux
hook (build-tree-ready form).
Issue #6 ask #1 only — VP9 enablement (ask #2) and AV1 dec integration
(ask #3) are explicitly deferred to a separate session per the user's
direction. The ampere.yaml manifest documents what's excluded and why.
## Patches promoted
Six patches from boltzmann:~/src/misc_patches/genbook/kernel/ get
scope-tagged into kernel-agent's tree:
soc/rockchip/rk3588/
0001-...Add-pwm15-pinctrl-entries.patch (prereq for 0002)
module/coolpi-cm5/
0003-...Fix-power-off-by-enabling-RK806-as-system-power-controller.patch
board/coolpi-cm5-genbook/
0002-...Add-pwm-fan.patch
0004-...Enable-speaker-output-via-audio-graph-card.patch
0005-...Enable-USB-C-PD-charging-via-FUSB302.patch
0008-...Add-lid-switch-and-USB3-PHY-lane-config.patch
Each new scope dir gets a README.md documenting what it carries and
why the scope-level granularity makes sense (pwm15 is SoC-wide,
RK806 power-off is SoM-level not board-level, the rest are
board-specific GenBook quirks).
Note on uncommitted-modifications flag in issue body: patches 0001-0004
have working-tree-only changes in misc_patches that fix malformed
'From: PATCH 000X/000Y' headers (placeholder text instead of an
RFC-2822 author identity). The working-tree versions with proper
'From: Markus Fritsche <mfritsche@localhost>' headers are what we ship
here — the unfixed-on-disk variants would fail patch -i header parsing
on stricter implementations and are user-side cleanup that hasn't been
committed back to misc_patches yet. Markus can commit the cleanup
to that personal repo separately; this PR's ingestion does not depend
on it.
Patches 0006 (HAVE_GCC_PLUGINS Kconfig), 0009 (Bluetooth btrtl),
0010 (multi-driver suspend/wakeup) from the misc_patches series are
intentionally NOT promoted here — they need different scope tags
(arch/arm64/, driver/bluetooth/, soc/rockchip/rk3588/ + driver/ split)
and will follow when their respective campaigns demand them. The
ampere.yaml manifest documents the explicit-defer for each.
## fleet/ampere.yaml manifest
Same shape as fleet/fresnel.yaml. Baseline pinned at marfrit/linux-rockchip
branch linux-rk3588-marfrit @ f8f3ad934433 (the working tree on
boltzmann; 18 commits ahead of v7.0-rc3, current 2026-05-15 tip).
Six scope-tagged patch includes per the apply-order in the package
(pwm15 pinctrl must precede the pwm-fan node consumer).
## ampere-specific bootloader path
Documented in manifest. ampere boots from /boot/firmware/ (vfat
partition on mmcblk0p1), not /boot/ (root partition) like fresnel.
The marfrit-packages PKGBUILD's extlinux-add hook needs to write to
/boot/firmware/extlinux/extlinux.conf, not /boot/extlinux/.
## ampere as 2nd aarch64 build host
Per the README update in PR #7, ampere is now a secondary aarch64
build host. The manifest's build_host: section pins ampere as
self-hosting primary for its own kernel, with boltzmann as secondary
and fermi as fallback. This is the first manifest that has its own
host listed as the primary build target — not ideologically pretty,
but pragmatic: native arch, same uarch, full RAM, no cross-compile
step, no need to wake another 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).