Package: src:linux
Version: 7.1.3-1
Severity: normal
Tags: patch
X-Debbugs-Cc: [email protected]

Dear Maintainers,

The debian-installer initrds for arm64 cannot bring up SDIO-attached
Wi-Fi devices sitting behind an mmc-pwrseq-simple power sequencer,
because the reset-gpio module is not included in any installer udeb.

Observed on a MediaTek MT8186 Chromebook (Lenovo IdeaPad Slim 3
Chrome 14M868, device-tree compatible google,steelix-sku393221,
"corsola" family) with an MT7921S Wi-Fi module on SDIO, booting the
current daily arm64 netboot installer (kernel 7.1.3+deb14-arm64):
ethdetect finds no NIC, manually loading mt7921s does nothing, and
/sys/kernel/debug/devices_deferred shows:

  wifi-pwrseq     pwrseq_simple: reset control not ready
  11240000.mmc    platform: supplied wifi-pwrseq not ready

Root cause
----------

Since the conversion of pwrseq_simple to the reset framework
(v6.9), pwrseq_simple with exactly one reset-gpios entry no longer
toggles the GPIO directly: it requests a reset control, which the reset
framework satisfies by instantiating an "auxiliary:reset.gpio"
device bound by the reset-gpio driver (CONFIG_RESET_GPIO=m on
arm64).  pwrseq_simple itself is built into mmc_core.ko
(CONFIG_MMC=m, CONFIG_PWRSEQ_SIMPLE=y), so it is always present,
but without reset-gpio.ko the request returns -EPROBE_DEFER
indefinitely.  The MMC host for the Wi-Fi slot then never probes,
the SDIO bus never enumerates, and the Wi-Fi driver has nothing to
bind to.  Installed systems are unaffected since the full
linux-modules package ships the module; only the kernel-wedge
initrd module selection lacks it.

Verified fix
------------

Adding reset-gpio (plus the two mt7961 firmware files, which are a
separate, known netboot limitation) to the netboot initrd and
regenerating the module indices makes the same machine detect Wi-Fi
in the installer immediately and out of the box: the deferred chain
resolves during boot, the SDIO card enumerates and mt7921s binds
without any manual step.

The patch below adds reset-gpio to the shared mmc-modules list,
marked optional so architectures without CONFIG_RESET_GPIO are
unaffected.  It sits with the MMC modules because its absence
blocks MMC host probing; it will benefit any platform using
mmc-pwrseq-simple with a single reset line (most ARM Chromebooks
with SDIO Wi-Fi, various ARM boards).

diff --git a/debian/installer/modules/mmc-modules 
b/debian/installer/modules/mmc-modules
index c7aa372..e4974a1 100644
--- a/debian/installer/modules/mmc-modules
+++ b/debian/installer/modules/mmc-modules
@@ -4,5 +4,9 @@ drivers/mmc/host/**
 # Multifunction card reader driver
 tifm_7xx1 ?
 
+# GPIO-based reset controller, required by mmc-pwrseq-simple
+# (built into mmc_core) for a single reset-gpios line since 6.9
+reset-gpio ?
+
 # Adds a dependency on pcmcia-modules
 sdricoh_cs -

Reply via email to