From 61b2f59cedd3e3da080252688cd08d6c5b6414bf Mon Sep 17 00:00:00 2001 From: rob thijssen Date: Tue, 28 Jul 2026 16:23:46 +0300 Subject: [PATCH] =?UTF-8?q?docs:=206.9=20fails=20identically=20=E2=80=94?= =?UTF-8?q?=20not=20a=20recent=20regression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit postmarketOS ships a kernel for this laptop, which makes testing an old kernel cheap: their apk carries vmlinuz, the C630 dtb and modules, no image writing needed. 6.9.0-sdm845 crashes exactly like 6.12 and 7.1 — 23 QLINK crashes in 70 seconds, wlfw never appears. Three kernels across two years, one of them from a distro that lists this machine as supported, all identical. That, plus aarch64-laptops publishing a device tree with wifi disabled and no modem node at all, leaves the regression premise with nothing supporting it. Record the method, the modem-test harness that captures verdicts without networking, and the /lib symlink trap that makes installing foreign modules dangerous. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011XgGF5wfxLDAybVnNz6eNQ --- docs/firmware.md | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/docs/firmware.md b/docs/firmware.md index cdf8f67..494364c 100644 --- a/docs/firmware.md +++ b/docs/firmware.md @@ -452,18 +452,41 @@ crash-and-lockup behaviour. So "WiFi worked in 2019" may never have been true in the form assumed here, and the modem may simply have never got past RF init under Linux on this machine. -#### Kernel bracketing has not been possible +#### It is not a recent regression: 6.9 fails identically -Testing the regression theory anyway needs an old kernel that boots here, and -that has not been achieved. Neither a hand-built 5.10.261 (defconfig plus the -SDM845 platform, UFS, PHY and ext4, all verified in `.config`) nor Fedora's own -6.1.18 reaches userspace: both die after the EFI stub with nothing in the -journal, with `earlycon=efifb`, `keep_bootcon` and `arm-smmu.disable_bypass=0` -tried, and with the initramfs rebuilt without this repo's dracut config in case -its forced `phy-qcom-qmp-ufs` was the problem. UFS is present in the 6.1 device -tree, so that is not the cause. Fedora's 6.12.15 boots and crashes identically -to 7.1.5, leaving the bracket at 6.12 ≤ broken ≤ 7.1 and nothing older testable -from the internal disk. Booting an old distro from USB is the remaining way in. +postmarketOS supports this machine and builds a kernel for it, which makes +their package the easiest old kernel to test — it contains `vmlinuz`, a C630 +device tree and its modules, and needs no image writing: + +```sh +curl -O http://mirror.postmarketos.org/postmarketos/v24.06/aarch64/linux-postmarketos-qcom-sdm845-6.9.0-r2.apk +tar xzf linux-postmarketos-qcom-sdm845-6.9.0-r2.apk # an apk is a tarball +``` + +Install the modules under `/usr/lib/modules/6.9.0-sdm845` — **not** by +extracting a `lib/`-rooted archive into `/`, which replaces Fedora's +`/lib -> usr/lib` symlink and takes the machine down — then `depmod`, build an +initramfs with `dracut --kver`, and add a BLS entry. + +**Kernel 6.9.0-sdm845 produces the identical failure**: 23 QLINK crashes in +70 seconds, same trace, `wlfw` never appears. So the modem fails the same way +on 6.9, 6.12 and 7.1 — three kernels across two years, one of them built and +shipped by a distribution that lists this laptop as supported. Whatever is +wrong is not a recent kernel regression. + +Older still is untestable from the internal disk: neither a hand-built 5.10.261 +(defconfig plus the SDM845 platform, UFS, PHY and ext4, all verified in +`.config`) nor Fedora's own 6.1.18 reaches userspace. Both die after the EFI +stub with nothing in the journal, with `earlycon=efifb`, `keep_bootcon` and +`arm-smmu.disable_bypass=0` tried, and with the initramfs rebuilt without this +repo's dracut config in case its forced `phy-qcom-qmp-ufs` was the problem. UFS +is present in the 6.1 device tree, so that is not the cause. + +A useful harness for this: `c630-modem-test`, a oneshot unit gated on +`/var/lib/c630-modem-test-armed` that starts the modem, waits, and appends a +verdict to `/var/log/c630-modem-test.txt`. Results survive a kernel that cannot +bring up networking — which the pmOS kernel could not, having no driver for the +USB dongle in use. Booting test kernels here is otherwise cheap and safe: add a BLS entry, set `next_entry` in the GRUB environment for a one-shot boot, and a power-cycle