patches/driver/bes2600/*-danctnix/: reconstruct broken per-series mirrors (PR #17 followup) #29
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
The per-series
-danctnixmirrors merged in #17 do NOT apply against the linux-pinetab2 baseline. Discovered during the ohm pkgrel=4 migration audit on 2026-05-18.Symptom
ka-promote ohmwith the original 17 per-series includes produced a 172 644-byte cumulative touching 27 file paths, of which 11 are bogus:bes2600/foo.c):bes2600/bes2600_factory.c,bes2600/bes2600_factory.hbes2600/bes2600_sdio.cbes2600/bes_chardev.cbes2600/bes_log.hbes2600/bes_pwr.cbes2600/Makefilebes2600/sta.cbes2600/wsm.hdiff --git a/drivers/staging/bes2600/bes2600_sdio.c b/bes2600/bes2600_sdio.c—a/says staging path,b/says DKMS root.patch/git applyagainst a linux-pinetab2 baseline rejects these because there is nobes2600/directory at the kernel root — bes2600 lives atdrivers/staging/bes2600/in-tree.Workaround landed in #28
patches/driver/bes2600/cumulative-c5x-danctnix/— single-file interim staging the hand-curated cumulative fromboltzmann:~/src/besser/marfrit-besser/danctnix-besser-pkgbuild/kernel/0001-bes2600-besser-cumulative-series.patch. 148 149 bytes, touches the correct 48drivers/staging/bes2600/*files. This is what pkgrel=3 builds with on ohm.The 17 broken per-series series-dirs remain in
patches/driver/bes2600/but are dropped fromfleet/ohm.yamlincludes. They should be reconstructed (this issue), not deleted, so authorship + commit messages survive the rebuild.Reconstruction plan
Source of truth:
marfrit/bes2600-dkms-mobianrepo (the canonical c5x driver state). Each-danctnixseries should be regenerated by:bes2600-dkms-mobiancorresponding to each series (the series legend in danctnix-besser-pkgbuild changelog: A, B, C v3, F, G, D, E, C2, c5.x, c6.x, c7, H — NOT alphabetical).git format-patch <range> --src-prefix=a/drivers/staging/bes2600/ --dst-prefix=b/drivers/staging/bes2600/(or post-rewrite with sed to fix prefixes).ka-promote ohm --validate-against <clean-checkout>).fleet/ohm.yamland re-include the per-series in the original A-H order.Why this matters
Per-series traceability is the whole point of
ka-promote's manifest model. A single-file cumulative is the interim that ships, not the long-term shape. Once reconstructed:apply_orderfield per the manifest comments can be honored properly.Acceptance
ka-promote ohmwith reconstructed per-series produces a cumulative byte-equivalent (or applying to identical source-tree state) topatches/driver/bes2600/cumulative-c5x-danctnix/0001-...patch(b2sum verified at the time of reconstruction).fleet/ohm.yamlswaps the interim include for the per-series includes; ka-promote remains clean.Provenance / blame
#17 (the migrate-besser PR) did the mass-rewrite. The DKMS-style paths likely came from copying patches verbatim from a bes2600-dkms-mobian working tree without rewriting
a//b/prefixes to the in-tree path. The mixed-prefix corruption suggests one patch was partially renamed.Refs: #28 (interim workaround), #5 (PKGBUILD migration, partial), besser#1 (closed).
Planning notes for a redo (from the failed pkgrel=6 attempt, 2026-05-19/20)
Closing PR #36 and reverting PR #33 (commits
2299d7a02in marfrit-packages,588350cin kernel-agent) was driven by a real regression — full repro in besser#22. Capturing what a future redo needs to do differently, while the context is fresh.Acceptance criteria
feedback_phase7_real_loadmemory entry and besser#22.wifi_force_close → tx_loop_set_enable WARN_ONcascade in the soak window. That's the specific symptom that surfaced.bes_sdio_memcpy_io_helper err=-110/startup timeout!!!— the chip-wedge endpoint of the cascade.26B0003FE9F2B05DCE838C4) is preferred but not mandatory. Functional equivalence under load is mandatory. PR #33/#36 produced different srcversion (1A919EED0E6DC2478559B17) AND functionally diverged under sustained load.Likely root cause of the previous failure
During the rebase of
bes2600/cleanupsonto a v7.0-danctnix1-aligned baseline (danctnix-syncbranch), the merge conflict on theremove-chardev-user-interfacecommit was resolved by acceptingtheirs(the patch's removal intent), then surgically re-adding three helpers thatbes2600_btuart.cneeds to link:bes2600_chrdev_switch_subsys_glbbes2600_chrdev_is_bus_errorbes2600_switch_bt(as static)Both got
EXPORT_SYMBOL_GPLso btuart can use them. The link succeeded, the module loaded, short-window functional checks looked fine.But a fourth helper,
bes2600_chrdev_wifi_force_close, was kept by the patch'stheirs-merge and the recovery state it touches relies onbes_chardev.cinternals (thebes2600_cdevstatic + itsstatus_lock,bus_error,halt_dev,bus_probefields, the chardev wait-queues) that I did not carefully preserve in the re-add. When Patch A'sdecrypt-storm fast-recover → forcing reassoceventually fires (typical 1–6h), the recovery path enters_wifi_force_close, hits inconsistent state, and the chip wedges.The c5x-interim hand-curated cumulative kept the chardev helpers AND the supporting state in a consistent shape. The naive rebase conflict resolution didn't.
What a redo must do differently
bes_chardev.cfrom a pkgrel=5 build (/tmp/...-extract/src/linux-7.0/drivers/staging/bes2600/bes_chardev.cafterprepare()). This is the authoritative shape.bes_chardev.c. Port the missing/wrong bits — likely involves thebes2600_chrdev_wifi_force_closefunction body itself + the staticbes2600_cdevstruct definition + the chardev wait_queue initializations.theirsblindly on hand-curated patches. When upstream c5x-interim has surgically kept a function that other danctnix-only files depend on, the rebase must preserve the same intent — not just enough symbols to satisfy the linker.Branches kept around for the redo
marfrit/bes2600-dkms:danctnix-sync,cleanups-rebased-on-danctnix,bh-c-fossil-cleanup-rebased(the rebased commit tree — most conflict resolutions ARE correct, only the chardev re-add needs to be redone).claude-noether/kernel-agent:noether/kernel-agent-29-rebased-on-danctnix-clean(the per-series patch files generated from the rebased branches).These stay until a redo branch supersedes them. Reverting #33 brought the
cumulative-c5x-danctnix/interim back intofleet/ohm.yamlas the working state.Leaving this issue open so the per-series reconstruction work resumes when there's time + an explicit owner.