Netdev List
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Vitaliy Sochnev <sochnev.v.74@gmail.com>
Cc: Lorenzo Bianconi <lorenzo@kernel.org>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	stable@vger.kernel.org,
	"moderated list:AIROHA ETHERNET DRIVER"
	<linux-arm-kernel@lists.infradead.org>,
	"moderated list:AIROHA ETHERNET DRIVER"
	<linux-mediatek@lists.infradead.org>,
	"open list:AIROHA ETHERNET DRIVER" <netdev@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH net v2] net: airoha: npu: load the firmware without the sysfs fallback
Date: Thu, 13 Aug 2026 14:33:48 +0100	[thread overview]
Message-ID: <20260813133348.GB265046@horms.kernel.org> (raw)
In-Reply-To: <20260811181717.19339-1-sochnev.v.74@gmail.com>

On Tue, Aug 11, 2026 at 07:16:59PM +0100, Vitaliy Sochnev wrote:
> airoha_npu_load_firmware() maps a missing firmware file to -EPROBE_DEFER
> so that the NPU can be brought up once the rootfs carrying /lib/firmware
> has been mounted. That mapping holds only as long as request_firmware()
> reports -ENOENT.
> 
> It does not when the sysfs fallback is in play. With
> CONFIG_FW_LOADER_USER_HELPER_FALLBACK set, or with the fallback armed at
> runtime through /proc/sys/kernel/firmware_config/force_sysfs_fallback,
> request_firmware() hands the request to a userspace helper, waits out the
> full loading_timeout and returns -ETIMEDOUT. The -ENOENT test no longer
> matches, dev_err_probe() turns the result into a hard failure, and the
> NPU is left unbound after stalling the boot for 60 seconds:
> 
>   airoha-npu 1e900000.npu: Direct firmware load for airoha/en7581_npu_rv32.bin failed with error -2
>   airoha-npu 1e900000.npu: Falling back to sysfs fallback for: airoha/en7581_npu_rv32.bin
>   airoha-npu 1e900000.npu: error -ETIMEDOUT: failed to run npu firmware
>   airoha-npu 1e900000.npu: probe with driver airoha-npu failed with error -110
> 
> Clearing FW_LOADER_USER_HELPER in the configuration is not a dependable
> guard against this, because unrelated drivers select it. On the affected
> build the symbol was turned back on by LEDS_LP55XX_COMMON, even though
> the platform had explicitly disabled it.
> 
> Use request_firmware_direct() instead. It sets FW_OPT_NOFALLBACK_SYSFS,
> so a missing file is reported as -ENOENT whatever the firmware loader is
> configured to do, and the deferred probe path works as intended.
> 
> Two consequences are worth stating plainly.
> 
> The helper is not merely bypassed for the boot-before-rootfs case.
> fw_run_sysfs_fallback() returns early on FW_OPT_NOFALLBACK_SYSFS, so this
> driver's firmware requests can no longer be served by a usermode helper
> at all, including on a system where that is the only delivery route;
> having no second firmware source, the driver would defer forever there.
> That is a deliberate trade-off: the -ENOENT to -EPROBE_DEFER mapping was
> written to wait for a filesystem, and the sysfs helper interface has had
> no in-tree consumer since udev dropped firmware loading.
> 
> request_firmware_direct() also sets FW_OPT_NO_WARN, which drops the only
> message naming the file that failed to load. Report it from the driver
> instead, so the name lands in the deferred probe reason and shows up in
> the "deferred probe pending" line emitted at
> driver_deferred_probe_timeout. The generic report in airoha_npu_probe()
> goes away with it, since it would otherwise overwrite that reason with a
> message naming nothing; of the paths it covered, devm_ioremap_resource()
> reports itself and the malformed firmware-name property now does too.
> 
> Measured on a Nokia XG-040G-MD with FW_LOADER_USER_HELPER=y and
> FW_LOADER_USER_HELPER_FALLBACK=y forced on, two images from the same
> tree differing only by this patch:
> 
>   without:  fallback at 2.477s -> -ETIMEDOUT at 64.555s -> probe failed
>             with -110, preinit at 69.6s, NPU unbound
>   with:     no fallback, NPU fw version 1456.62 at 3.665s, preinit at
>             7.6s
> 
> Fixes: 23290c7bc190 ("net: airoha: Introduce Airoha NPU support")
> Cc: stable@vger.kernel.org
> Signed-off-by: Vitaliy Sochnev <sochnev.v.74@gmail.com>
> ---
> v2:
>  - Keep the file name in the diagnostics. request_firmware_direct() also
>    sets FW_OPT_NO_WARN, which dropped the only message naming the file;
>    report it from airoha_npu_load_firmware() through dev_err_probe() so
>    the name lands in the deferred probe reason. Drop the generic report
>    in airoha_npu_probe(), which would overwrite that reason, and give
>    the malformed firmware-name path a message of its own.
>  - Say in the changelog that the usermode helper path is disabled for
>    this driver's requests rather than merely bypassed, and why that
>    trade-off is acceptable.
>  - Both points raised in review of v1:
>    https://lore.kernel.org/netdev/20260807024125.434055-1-sochnev.v.74@gmail.com/

Reviewed-by: Simon Horman <horms@kernel.org>


      reply	other threads:[~2026-08-13 13:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-11 18:16 [PATCH net v2] net: airoha: npu: load the firmware without the sysfs fallback Vitaliy Sochnev
2026-08-13 13:33 ` Simon Horman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260813133348.GB265046@horms.kernel.org \
    --to=horms@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=lorenzo@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sochnev.v.74@gmail.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox