fleet/ohm: switch bes2600 to cumulative-c5x interim + close besser#1 + GCC 15 SCS fix (closes #5 partial) #28

Merged
marfrit merged 9 commits from claude-noether/kernel-agent:noether/migrate-pinetab2-pkg-and-patches into main 2026-05-18 20:56:41 +00:00
4 changed files with 4406 additions and 48 deletions
+30 -48
View File
@@ -25,63 +25,43 @@ baseline:
# 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.
# 2026-05-18 audit: the per-series -danctnix mirrors in
# patches/driver/bes2600/*-danctnix/ created by kernel-agent#17 use
# DKMS-style root paths (bes2600/foo.c) rather than in-tree staging
# paths (drivers/staging/bes2600/foo.c), and at least one has corrupted
# mixed-prefix headers (a/drivers/staging/bes2600/... b/bes2600/...).
# They do NOT apply cleanly against the linux-pinetab2 baseline.
#
# 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.
# Until the per-series mirrors are reconstructed (kernel-agent followup
# issue), the bes2600 driver scope is satisfied by a single-file
# cumulative captured from the working hand-managed
# danctnix-besser-pkgbuild flow on boltzmann (see
# patches/driver/bes2600/cumulative-c5x-danctnix/README.md). This is
# the c5x stack as it shipped in pkgrel=3 on 2026-05-18.
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.
# bes2600 driver (c5x stack as shipped in pkgrel=3) — single-file
# interim cumulative; per-series reconstruction tracked separately.
- driver/bes2600/cumulative-c5x-danctnix/
# close besser#1 — refuse multi-channel 5 GHz scans at driver boundary.
- 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.
# GCC 15.2.1 build-fix for arm_neon.h + SHADOW_CALL_STACK interaction.
# Runtime no-op as long as the config has CONFIG_SHADOW_CALL_STACK=n
# (current ohm setting). Kept in the manifest for the day SCS gets
# re-enabled. See reference_arm64_scs_arm_neon_gcc15 memory.
- arch/arm64/scs-arm-neon-build-fix/
# close besser#18 — pending_record_lock SOFTIRQ-safe -> -unsafe inversion.
# Mirror of marfrit/bes2600-dkms#11 (d95453c). 5-site spin_lock -> _bh.
- driver/bes2600/queue-pending-record-lock-bh-danctnix/
# 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
# - bare (non-danctnix) variants of the per-series mirrors: same
# root-path bug as the -danctnix variants per the 2026-05-18 audit
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
@@ -109,9 +89,11 @@ verify:
- 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
bar5_burn_in:
mode: opt-in
tests:
- "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
@@ -0,0 +1,35 @@
# cumulative-c5x-danctnix — interim single-file cumulative
**Series role**: ohm manifest's bes2600 driver patchset, c5x stack as
shipped in `linux-pinetab2-danctnix-besser` pkgrel=3 on 2026-05-18.
## Why this is a single .patch and not split per-fix
The 12-ish per-series mirror PR (kernel-agent#17) of the boltzmann-side
`marfrit/besser` series produced patches with DKMS-style paths
(`bes2600/*` at root) rather than in-tree staging paths
(`drivers/staging/bes2600/*`), and at least one entry has corrupted
mixed-prefix headers (`a/drivers/staging/bes2600/foo.c b/bes2600/foo.c`).
Those series do NOT apply cleanly to the linux-pinetab2 baseline.
Audit performed 2026-05-18 during ohm migration:
- ka-promote ohm (using the per-series includes) produces a
172 644-byte cumulative touching 27 file paths, of which 11 are
bogus DKMS-style or mixed-prefix.
- The hand-curated `0001-bes2600-besser-cumulative-series.patch` from
the working `danctnix-besser-pkgbuild` (boltzmann) is 148 149 bytes
touching 48 distinct in-tree staging files — and is what pkgrel=3
actually builds with.
This single-file cumulative is staged here so the ohm migration can
ship through the kernel-agent flow today without first reconstructing
12 series-dirs. The proper per-series split is tracked separately —
see kernel-agent issue (TBD) for the rewrite.
## Provenance
- Source file: `boltzmann:~/src/besser/marfrit-besser/danctnix-besser-pkgbuild/kernel/0001-bes2600-besser-cumulative-series.patch`
- Reflects c5x driver state in `marfrit/bes2600-dkms-mobian` branch as
of 2026-05-08, applied against `drivers/staging/bes2600/` in-tree.
- Series legend (A, B, C v3, F, G, D, E, C2, c5.x, c6.x, c7, H — NOT
alphabetical) per the danctnix-besser-pkgbuild changelog comments.
@@ -0,0 +1,19 @@
# scan-filter-5ghz-danctnix — close besser#1
Refuses multi-channel 5 GHz scan requests at the driver boundary with
`-EOPNOTSUPP`, eliminating the WSM 0x0007 reject storm. Single-channel
5 GHz scans still pass through (NM `802-11-wireless.band=a` BSS
verification path stays functional).
Phase 7 baseline on ohm: Pattern A 14.3/h → 0/h (verified 2026-05-18,
30 min window). 5 GHz association achieves 150 Mbit/s MCS 7 HT40 SGI vs
72.2 on 2.4 GHz.
Single combined patch file because the two commits in the source
(initial filter + `n_channels > 1` refinement) form a 2-commit
follow-up series and git apply concatenation handles both. Splitting
into two .patch files would mean a fragile dependency on cross-file
sequencing inside the same series-dir.
Provenance: closes besser#1. Mirror of source-of-truth in
`marfrit/bes2600-dkms` branch `bes2600/scan-filter-5ghz`.