diff mbox series

wifi: iwlwifi: Use request_module_nowait

Message ID 20240424174748.957641-1-greearb@candelatech.com
State Superseded
Headers show
Series wifi: iwlwifi: Use request_module_nowait | expand

Commit Message

Ben Greear April 24, 2024, 5:47 p.m. UTC
From: Ben Greear <greearb@candelatech.com>

This appears to work around a deadlock regression that came in
with the LED merge in 6.9.

The deadlock happens on my system with 24 iwlwifi radios, so maybe
it something like all worker threads are busy and some work that needs
to complete cannot complete.

For reference, see mail to lkml with subject
"6.9.0-rc2+ kernel hangs on boot (bisected, maybe LED related)"

Fixes: f5c31bcf604d ("Merge tag 'leds-next-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds")

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Johannes Berg April 25, 2024, 8:38 p.m. UTC | #1
On Wed, 2024-04-24 at 10:47 -0700, greearb@candelatech.com wrote:
> From: Ben Greear <greearb@candelatech.com>
> 
> This appears to work around a deadlock regression that came in
> with the LED merge in 6.9.
> 
> The deadlock happens on my system with 24 iwlwifi radios, so maybe
> it something like all worker threads are busy and some work that needs
> to complete cannot complete.
> 
> For reference, see mail to lkml with subject
> "6.9.0-rc2+ kernel hangs on boot (bisected, maybe LED related)"

You should use a Link: tag with a lore link for that :)

> Fixes: f5c31bcf604d ("Merge tag 'leds-next-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds")
> 
> Signed-off-by: Ben Greear <greearb@candelatech.com>

And no blank lines between tags, please.

johannes
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
index 4696d73c8971..993177e1de27 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -1744,7 +1744,7 @@  static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
 	 * or hangs loading.
 	 */
 	if (load_module)
-		request_module("%s", op->name);
+		request_module_nowait("%s", op->name);
 	failure = false;
 	goto free;