mirror of
https://github.com/openwrt/openwrt.git
synced 2026-10-14 10:57:56 +04:00
NET_AIROHA_NPU is built-in and probes before rootfs is mounted, so request_firmware() correctly fails with -ENOENT. The driver maps that to -EPROBE_DEFER and succeeds once /lib/firmware is available. With CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y (inherited from generic), a missing firmware instead blocks ~60s on the sysfs userspace helper and returns -ETIMEDOUT. That is not mapped to -EPROBE_DEFER, so NPU probe fails permanently: Direct firmware load for airoha/en7581_MT7996_npu_rv32.bin failed with error -2 Falling back to sysfs fallback for: airoha/en7581_MT7996_npu_rv32.bin error -ETIMEDOUT: failed to run npu firmware probe with driver airoha-npu failed with error -110 This shows up on official / firmware-selector images because CONFIG_ALL_KMODS=y builds kmod-leds-lp55xx-common, which implies FW_LOADER_USER_HELPER and then FALLBACK from generic takes effect. Match bcm53xx/gemini/layerscape: keep FW_LOADER_USER_HELPER (from generic) and unset only FALLBACK on an7581/an7583. Unsetting both is not refresh-safe — FALLBACK depends on USER_HELPER, so make target/linux/refresh drops the FALLBACK line when USER_HELPER is off, and ALL_KMODS builds then reintroduce the -ETIMEDOUT failure. With FALLBACK disabled, early firmware misses keep returning -ENOENT and deferred probe can load the NPU firmware after rootfs. Fixes: https://github.com/openwrt/openwrt/issues/22709 Supersedes: https://github.com/openwrt/openwrt/pull/22697 Signed-off-by: Daniel Pawlik <pawlik.dan@gmail.com> Link: https://github.com/openwrt/openwrt/pull/24571 Signed-off-by: Robert Marko <robimarko@gmail.com>