Fixes patching failure on linux-6.12.y: the patch sets
pc->chip.can_sleep = false, which upstream stable already did in
v6.12.97, so the hunk is now rejected as previously applied.
Signed-off-by: Viacheslav Bocharov <v@baodeep.com>
Picks up the two fixes merged in jethome-iot/rtl88x2cs since a2066739:
ae2cc93 makes the rx_ampdu sz_limit init handle an unexpected nss index
instead of indexing past the table, and a2e3fed makes remain_on_channel
and mgmt_tx report the cookie cfg80211 hands them, gated at
KERNEL_VERSION(7, 3, 0) so the 6.12/6.18/7.1/7.2 builds are unchanged.
armbian-resize-filesystem runs with DefaultDependencies=no and
Before=basic.target, so the entire boot waits for it. The script calls
partprobe, which waits for the udev queue to drain. A udev worker that
never finishes its event stalls that queue for the full 180s worker
timeout, and basic.target - together with dbus.service - is delayed by
the same amount.
That delay breaks DNS on the first boot. systemd-resolved is ordered
before sysinit.target, so it starts while dbus is still not up and
never acquires org.freedesktop.resolve1. NetworkManager hands DNS
servers to resolved over D-Bus only, so the DHCP-provided servers never
reach it and name resolution stays dead for the whole session, which is
exactly when armbian-firstrun and apt need it.
Resizing need not run that early: resize2fs operates online on the
mounted rootfs, and the only unit ordered against it is lowmem-mkswap.
Move both units to multi-user.target so a stalled udev queue can no
longer hold up the boot. armbian-firstlogin already waits for queued
jobs through systemctl is-system-running --wait, and the script
disables itself with systemctl disable, which follows the new [Install]
section on its own.
Claude-Session: https://claude.ai/code/session_01SWvjHEYMimjZVj1qy3aR2k
post_build_image__900_jethub_burn looked for the u-boot .deb in
${SRC}/output/debs, but BETA builds (BETA=yes, used by the nightly) place
reversioned debs in output/debs-beta (DEB_STORAGE). The Amlogic burn
conversion therefore failed with "u-boot deb not found for <board>".
Use ${DEB_STORAGE} with a fallback to the previous path.
Two related upstream patches, grouped under one prefix + number, in
meson64-7.1 and meson64-7.2:
- general-gpio-shared-cansleep-0001-gpio-shared-proxy-always-mutex.patch:
serialize the shared GPIO descriptor with a sleeping mutex;
gpio_shared_proxy_set_unlocked() calls gpiod_set_value_cansleep()
directly; the proxy gpiochip is always sleeping.
- general-gpio-shared-cansleep-0002-pinctrl-meson-restore-non-sleeping-gpio.patch:
restore meson gpio_chip.can_sleep = false (applies after 0001).
meson64-7.2 shipped an earlier draft of these under separate filenames;
this replaces it with the grouped versions. meson64-6.12/6.18 carry no
shared-proxy driver and are unchanged.
Linux v7.1 dropped the 'default y' from GPIO_CDEV_V1, the v1 GPIO
character-device ABI used by libgpiod 1.x. That is what virtually all
current userspace ships: every Ubuntu release and Debian up to bookworm
use libgpiod 1.x; only Debian trixie and newer moved to libgpiod 2.x
(v2 ABI). Without this option such images lose all libgpiod GPIO access
(gpioget/gpioset/gpiomon return -EINVAL).
The option is purely additive - the v2 ABI used by libgpiod 2.x stays
available - so enabling it only restores the pre-7.1 behaviour. The
older meson64 branches (6.12/6.18/7.0) still default it to y.
7.1 carries both the masking commit (28f240683871, not reverted in
v7.1-rc) and the gpio-shared-proxy code, so it needs the same pair as
7.0: the proxy locking fix plus the meson can_sleep restore. Patches
are generated from the same kernel commits (based on v7.1-rc7) and
apply without offset.
Boot-tested on JetHub D1 (jethubj100, BRANCH=bleedingedge, 7.1.0-rc6):
clean dmesg (no BUG/WARNING), 1-Wire DS18B20 detected and read.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The masking commit was backported to 6.12.y as well (fee56df34234);
the shared-GPIO proxy code does not exist in 6.12 either, so there the
backport also fixes nothing and only breaks w1-gpio. Same restore
patch, adapted Fixes reference.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mainline commit 28f240683871 ("pinctrl: meson: mark the GPIO controller
as sleeping", in v7.0, backported to 6.18.y as e81d1bc4ea79) marks the
whole meson GPIO controller as sleeping to work around a locking bug in
the gpio-shared-proxy layer. The flag breaks atomic value-path GPIO
consumers on all Amlogic boards: w1-gpio (1-Wire bitbang) hits
WARN_ON(can_sleep) on every transferred bit inside its IRQs-off time
slot, the bit timing is destroyed and no 1-Wire devices are detected
(w1_master_slave_count stays 0).
meson64-7.0: fix the root cause in gpio-shared-proxy (always serialize
with a sleeping mutex instead of deriving the lock type from the
underlying chip's can_sleep) and restore meson can_sleep=false.
meson64-6.18: the shared-GPIO proxy code does not exist in 6.18, so the
backported workaround fixes nothing there and only causes the
regression; restore meson can_sleep=false.
Both kernels build with the patches applied. The fix pair was verified
on hardware on JetHub D1 (Amlogic A113X, DS18B20 on GPIOA_14) with a
7.0.12 kernel: the sensor is detected and read again, no gpiolib
warnings. On-device verification of the per-branch builds is tracked in
the PR.
The same two patches are being submitted to LKML (gpio/pinctrl
maintainers); they can be dropped here once they land upstream.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>