Skip to content

v3.9.0 — Linux 6.18.35, release-stamped uname, single-GPIO EFR32 nRST

Choose a tag to compare

@jnilo1 jnilo1 released this 10 Jun 20:06
· 7 commits to main since this release

Kernel-only release: Linux 6.18.35 rebase, release-stamped uname -r, and the EFR32 nRST pulse rework from discussion #121. Bootloader, rootfs and userdata payloads are unchanged — existing installs can upgrade with a kernel-only reflash.

Linux 6.18.24 → 6.18.35

The SysRq dispatch series we submitted upstream (serial core guard + 8250/8250_dw IRQ-path dispatch) landed in 6.18.35, so the three provisional patches are gone from patches-6.18/. Two context-drifted patches were refreshed to offset 0; the remaining 51 apply unchanged. build_kernel.sh now aborts loudly on a rejected or fuzzed hunk instead of swallowing it, and iperf3 confirms no throughput regression on the rebase (RX 93.8 / TX 69.9 Mbit/s).

Kernel self-identifies its firmware release (issue #120)

uname -r now reads 6.18.35-rtl8196e-v3.9.0: the firmware release is stamped into the kernel localversion at build time. After a kernel-only reflash the running kernel names its release even though /userdata/etc/version still describes the (unchanged) userdata partition — the mixed state that was confusing in #120 is now visible and accurate.

UART↔TCP bridge v1.1 — nRST pulse reworked to a single open-drain GPIO (discussion #121)

nrst_pulse used to flip three PIN_MUX_SEL_2 fields copied from the chip's reset-default value. Per-pad bench isolation showed the EFR32 nRST is wired to a single pad (B4 = gpio-rtl819x line 12); the other two fields just re-routed unrelated pads during every pulse.

  • The pulse now claims that one line through the gpiod consumer API with open-drain semantics: assert drives the pad low, release floats it back to input and the EFR32's internal RESETn pull-up releases the chip (the line is never driven high).
  • New runtime-writable nrst_gpio parameter (default 12) so ports to RTL8196E twins with different nRST routing select their line without patching the driver.
  • Sysfs interface unchanged (echo 1 > .../nrst_pulse); recover_efr32 and flash_efr32.sh work as before.

Upgrading

Full install (recommended for new users):

./flash_install_rtl8196e.sh <gateway-ip>

Existing v3.8.x installs only need the kernel partition — config, Thread dataset and SSH keys untouched:

./3-Main-SoC-Realtek-RTL8196E/flash_remote.sh -y kernel <gateway-ip>

After upgrading, uname -r should read 6.18.35-rtl8196e-v3.9.0.

Issue #99 soak boxes: please stay on v3.8.3 for now. The panic-capture instrumentation (watchdog v1.4 / record v3) is identical in both releases, so upgrading gains nothing for the investigation — while the 6.18.35 rebase changes the kernel base under test (notably two upstream hrtimer commits in 6.18.33). Keeping the soak fleet on the frozen v3.8.3 baseline keeps the next capture comparable; we'll give the all-clear in #99 once the first capture has been analyzed.