Files
kernel-agent/fleet/ohm.yaml
T
test0r 4c80458d1f fleet/ohm: import Patch I (5GHz scan filter) + arm64 SCS build-fix
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
2026-05-18 15:25:37 +02:00

143 lines
7.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# kernel-agent manifest for ohm (PineTab2 / Rockchip RK3566 + BES2600 SDIO WiFi/BT)
#
# Status: scaffolding from 2026-05-16. Patches/scopes are mirrored;
# the build pipeline (cumulative-patch generation, makepkg invocation,
# sign+publish) still relies on the hand-managed flow in
# boltzmann:~/src/besser/marfrit-besser/danctnix-besser-pkgbuild/kernel/.
# Once ka-promote / ka-build land, switch this manifest to authoritative
# and retire the boltzmann-side checkouts (canonical + the orphan at
# ~/src/besser/danctnix-besser-pkgbuild/ that the fourier-campaign
# sibling agent accidentally created).
#
# See kernel-agent issue #5 for the full migration plan.
host: ohm
arch: arm64
soc: rockchip/rk3566
board: pinetab2
distro: archlinux-arm # DanctNIX PineTab2 variant on Arch Linux ARM aarch64
baseline:
tree: DanctNIX/linux-pinetab2
url: https://codeberg.org/DanctNIX/linux-pinetab2
ref: v7.0-danctnix1 # _srcname=linux-pinetab2 _srctag=v${pkgver%.*}-${pkgver##*.}
upstream_compat: linux-7.0 # DanctNIX rebases off mainline + per-tablet delta
# Scope-tagged patch includes. Resolves to patches/<scope>/<file>.patch.
#
# Series-ordering note: the current cumulative-patch generation order on
# boltzmann is A, B, C v3, F, G, D, E, C2, c5.x, c6.x, c7, H — explicitly
# NOT alphabetical. ka-promote MUST honor an apply_order field when
# concatenating series into the build's per-job cumulative patch. The
# legend mapping series-letter → series-name lives in the current
# danctnix-besser-pkgbuild changelog on boltzmann; promote to this
# manifest once auto-generation is wired.
#
# DanctNIX siblings (-danctnix suffix) are selected here because ohm
# runs on the DanctNIX kernel base; the non-suffixed variants exist for
# vanilla mainline consumers that ohm doesn't currently have.
includes:
# Default-on series (uncontroversial fixes that ohm already runs):
- driver/bes2600/staging-prep-series-danctnix/
- driver/bes2600/pm-state-resync-danctnix/
- driver/bes2600/pm-timeout-silence-danctnix/
- driver/bes2600/pm-wake-consume-state-danctnix/
- driver/bes2600/pm-gate-on-handshake/
- driver/bes2600/pm-detect-firmware-unsupported-danctnix/
- driver/bes2600/scan-defer-backoff-tune-danctnix/
- driver/bes2600/scan-defer-on-reject-danctnix/
- driver/bes2600/lmac-recover-via-mmc-hw-reset-danctnix/
- driver/bes2600/tx-sdio-dma-oob-danctnix/
- driver/bes2600/factory-series/
- driver/bes2600/factory-thread-dev/
- driver/bes2600/factory-drop-kernel-write-danctnix/
- driver/bes2600/drop-dpd-file-paths-danctnix/
- driver/bes2600/drop-orphan-file-io-danctnix/
- driver/bes2600/remove-chardev-user-interface/
- driver/bes2600/enable-testmode/
# Patch I — besser#1 closure. Filter 5 GHz scan iteration at the
# driver boundary (refuses 5 GHz drv_hw_scan with -EOPNOTSUPP).
# Eliminates the wsm_generic_confirm 0x0007 dmesg storm.
# Phase 7 verified 2026-05-18: Pattern A 14.3/h → 0/h.
- driver/bes2600/scan-filter-5ghz-danctnix/
# Build-environment workaround for GCC 15.2.1 + CONFIG_SHADOW_CALL_STACK=y
# + arm_neon.h #pragma pop_options interaction. See besser#20 for the
# re-enable-once-GCC-fixed tracking; for now we ship with SCS=n in the
# config and this Makefile tweak as belt-and-suspenders (no-op if SCS
# is off; allows SCS=on once GCC permits). Cross-arch fix, not bes2600.
- arch/arm64/scs-arm-neon-build-fix/
# Explicitly NOT included (decision logged):
# - debian-copyright-fsf-address: Debian packaging metadata, not kernel
# - bare (non-danctnix) variants of the above: ohm runs DanctNIX base
config:
source: hand-managed config file in boltzmann:~/src/besser/marfrit-besser/danctnix-besser-pkgbuild/kernel/config
strategy: snapshot, fold to baseline, accept-new with rationale on diff
TODO: migrate config into kernel-agent flow once kconfig-by-manifest lands
# Override applied for pkgrel=2 (2026-05-18): CONFIG_SHADOW_CALL_STACK=n
# to work around GCC 15.2.1 arm_neon.h pragma issue. Track besser#20
# for re-enable plan. Flip back to =y in the manifest once verified
# to build clean on current Arch ARM GCC.
overrides:
CONFIG_SHADOW_CALL_STACK: n # WORKAROUND besser#20 — restore to y when GCC is fixed
package:
name: linux-pinetab2-danctnix-besser
versioning: "${baseline_ref}.kafr${pkgrel}" # e.g. v7.0-danctnix1.kafr1
install_mode: alongside # coexists with linux-pinetab2 if user wants A/B
conflicts: []
provides: [linux-pinetab2] # drop-in replacement; pacman can satisfy linux-pinetab2 deps
kernel_suffix: -danctnix-besser # vmlinuz-linux-pinetab2-danctnix-besser
bootloader: extlinux # PineTab2 standard
# PKGBUILD currently at:
# boltzmann:~/src/besser/marfrit-besser/danctnix-besser-pkgbuild/kernel/PKGBUILD
# TARGET location (per issue #5):
# marfrit/marfrit-packages/arch/linux-pinetab2-danctnix-besser/PKGBUILD
# PENDING the kernel-agent template-rendering pipeline (b2sums regen,
# pkgrel bump, cumulative-patch generation from manifest scope).
template_at: TBD-marfrit-packages-arch-linux-pinetab2-danctnix-besser
replaces_dkms: bes2600-dkms # once cumulative series in this manifest is enough
verify:
bar1_ssh_heartbeat: required
bar2_pkg_version: required
bar3_module_loaded:
- bes2600 module loads
- wlan0 + bt0 (BT/UART) present after boot
- sdio_force_uhs=0 not needed (DMA-OOB-read fix in tx-sdio-dma-oob series)
bar4_per_patch_probe: opt-in
bar5_burn_in: opt-in
- WiFi: 24h iperf3 to LAN host without rxhang
- PM: lid-close → wake cycles × 100 without bes2600 confirm-loss
build_host:
primary: boltzmann # native aarch64 with ohm's identical .config
fallback: fermi # hertz LXD, ALARM aarch64
# No distcc per feedback_kernel_agent_no_distcc.md.
backup:
pre_install: hertz:/sparfuxdata/kernel-agent-backups/ohm/${replaced_version}/
# ─────────────────────────────────────────────────────────────────────
# OPEN — kernel-agent CLI work blocking full migration:
#
# 1. ka-promote: read includes[] above + apply_order field (to be added),
# concatenate referenced series into a single .patch in the build dir.
# Validate it applies cleanly on baseline.ref. Compute b2sum for
# template substitution.
#
# 2. PKGBUILD template renderer: stamp pkgrel, ${_cumulative_b2sum},
# ${_srctag} from manifest into a PKGBUILD draft at the
# template_at location. Sign + publish to packages.reauktion.de.
#
# 3. Orphan retirement: surface ~/src/besser/danctnix-besser-pkgbuild/
# (NO remote, ~/src/besser/marfrit-besser/... is canonical) to
# Markus / fourier campaign for working-state migration BEFORE
# deleting. See besser issue #17 for the regression that the
# orphan caused. After the kernel-agent flow is authoritative,
# delete both checkouts.
# ─────────────────────────────────────────────────────────────────────