Re: [PATCH] firmware_loader: Use init_utsname()->release

From: John Garry
Date: Fri Feb 23 2024 - 09:30:04 EST



---
Note: As mentioned by Masahiro in [0], when CONFIG_MODVERSIONS=y it
could be possible for a driver to be built as a module with a different
kernel baseline and so use a different UTS_RELEASE from the baseline. So
now using init_utsname()->release could lead to a change in behaviour
in this driver. However, considering the nature of this driver and how it
would not make sense to build as module against a different tree, this

would not make sense to build it as an external module against against a
different tree, so this change should not have any effect to users.


ok


change should be ok.

[0] https://urldefense.com/v3/__https://lore.kernel.org/lkml/CAK7LNAQ_r5yUjNpOppLkDBQ12sDxBYQTvRZGn1ng8D1POfZr_A@xxxxxxxxxxxxxx/__;!!ACWV5N9M2RV99hQ!KxnFzsitgB8e0kDndt3nYwqw0FcAPKzJjuRl9BzwLQ9dbAtqK_SZOkhHw9ssT2PobYVkh8UU7WryWKwGXg$

Thanks for doing this, could you send a v2 with the "Note:" removed but
instead include that blurb as part of the commit log as it is important
information to retain.

ok


Could you also test the selftests to ensure nothing is broken ?

./tools/testing/selftests/firmware/fw_run_tests.sh

I am running this now, but it does not seem stable on a v6.8-rc5 baseline. I am seeing hangs. Are there any known issues?

This one passed, it seems to me:

https://pastebin.com/ZySPmH9h

But then on another run I see a hang at:

...
Testing with the file missing...
Batched request_firmware() nofile try #1: OK
Batched request_firmware() nofile try #2: OK
Batched request_firmware() nofile try #3: OK
Batched request_firmware() nofile try #4: OK
Batched request_firmware() nofile try #5: OK
Batched request_firmware_into_buf() nofile try #1: OK
Batched request_firmware_into_buf() nofile try #2: OK
Batched request_firmware_into_buf() nofile try #3: OK
Batched request_firmware_into_buf() nofile try #4: OK
Batched request_firmware_into_buf() nofile try #5: OK
Batched request_firmware_direct() nofile try #1: OK
Batched request_firmware_direct() nofile try #2: OK
Batched request_firmware_direct() nofile try #3: OK
Batched request_firmware_direct() nofile try #4: OK
Batched request_firmware_direct() nofile try #5: OK
Batched request_firmware_nowait(uevent=true) nofile try #1: OK
Batched request_firmware_nowait(uevent=true) nofile try #2: OK
Batched request_firmware_nowait(uevent=true) nofile try #3: OK
Batched request_firmware_nowait(uevent=true) nofile try #4: OK
Batched request_firmware_nowait(uevent=true) nofile try #5: OK
Batched request_firmware_nowait(uevent=false) nofile try #1: OK
Batched request_firmware_nowait(uevent=false) nofile try #2: OK
Batched request_firmware_nowait(uevent=false) nofile try #3: OK
Batched request_firmware_nowait(uevent=false) nofile try #4:


And kernel log:

[ 385.105004] test_firmware: #3: failed to async load firmware
[ 385.181221] test_firmware: #0: failed to async load firmware
[ 385.252231] test_firmware: #1: failed to async load firmware
[ 385.323307] test_firmware: #2: failed to async load firmware
[ 385.397444] test_firmware: #3: failed to async load firmware
[ 644.462125] INFO: task fw_filesystem.s:5466 blocked for more than 120 seconds.
[ 644.548803] Not tainted 6.8.0-rc5-g7e58e46976f2 #32
[ 644.613581] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 765.294106] INFO: task fw_filesystem.s:5466 blocked for more than 241 seconds.
[ 765.380805] Not tainted 6.8.0-rc5-g7e58e46976f2 #32
[ 765.445610] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 886.126154] INFO: task fw_filesystem.s:5466 blocked for more than 362 seconds.
[ 886.212883] Not tainted 6.8.0-rc5-g7e58e46976f2 #32
[ 886.277695] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.

FWIW, with my patch we get same output for "passing" run upto another hang.

Thanks,
John