> -----Original Message----- > From: Larry Finger <larry.finger@xxxxxxxxx> On Behalf Of Larry Finger > Sent: Monday, May 8, 2023 3:24 AM > To: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>; Ping-Ke Shih <pkshih@xxxxxxxxxxx> > Cc: linux-wireless <linux-wireless@xxxxxxxxxxxxxxx> > Subject: RCU WARNING Splat from rtw8822bu > > Hi, > > I got the following WARNING splat from rtw8822bu. Driver rtw89_8852be was > loaded, but inactive. This is the only instance of this warning in my logs even > though I have been testing this driver quite a lot. > [...] > [18177.576418] Workqueue: phy3 ieee80211_chswitch_work [mac80211] > [18177.576469] RIP: 0010:rcu_note_context_switch+0x571/0x5d0 > [18177.576472] Code: 00 00 00 00 0f 85 65 fd ff ff 49 89 84 24 a0 00 00 00 e9 58 > fd ff ff 48 c7 c7 60 66 ec b0 c6 05 96 5f 76 01 01 e8 af 0d f6 ff <0f> 0b e9 de > fa ff ff c6 43 11 00 48 8b 73 20 ba 01 00 00 00 48 8b > [18177.576473] RSP: 0018:ffffa937cb0afa50 EFLAGS: 00010086 > [18177.576475] RAX: 0000000000000000 RBX: ffff8d5b23233e80 RCX: 0000000000000027 > [18177.576476] RDX: ffff8d5b232224c8 RSI: 0000000000000001 RDI: ffff8d5b232224c0 > [18177.576477] RBP: 0000000000000000 R08: 0000000000000000 R09: ffffa937cb0af8f8 > [18177.576478] R10: 0000000000000003 R11: ffff8d5b2f546fa8 R12: ffff8d5b23233040 > [18177.576479] R13: ffff8d59a3475100 R14: ffff8d59a3475100 R15: ffffa937cb0afc00 > [18177.576480] FS: 0000000000000000(0000) GS:ffff8d5b23200000(0000) > knlGS:0000000000000000 > [18177.576481] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [18177.576483] CR2: 00007f0b70230fc4 CR3: 000000010dc34004 CR4: 00000000001706f0 > [18177.576484] Call Trace: > [18177.576485] <TASK> > [18177.576486] __schedule+0xb0/0x1460 > [18177.576492] ? __mod_timer+0x116/0x360 > [18177.576495] schedule+0x5a/0xc0 > [18177.576497] schedule_timeout+0x87/0x150 > [18177.576500] ? trace_raw_output_tick_stop+0x60/0x60 > [18177.576502] wait_for_completion_timeout+0x7b/0x140 > [18177.576505] usb_start_wait_urb+0x82/0x160 [usbcore > 3226d314cb1ead5093f872b7ec783a0667c9bdaa] > [18177.576529] usb_control_msg+0xe3/0x140 [usbcore > 3226d314cb1ead5093f872b7ec783a0667c9bdaa] > [18177.576547] rtw_usb_read+0x88/0xe0 [rtw_usb > ea7c9ef4045ae47f255f6c8259d13b8259ad6fcd] > [18177.576552] rtw_usb_read8+0xf/0x10 [rtw_usb > ea7c9ef4045ae47f255f6c8259d13b8259ad6fcd] > [18177.576556] rtw_fw_send_h2c_command+0xa0/0x170 [rtw_core > d6ae475d8b91a371feee3d61c7b6a8180a974991] > [18177.576571] rtw_fw_send_ra_info+0xc9/0xf0 [rtw_core > d6ae475d8b91a371feee3d61c7b6a8180a974991] > [18177.576584] drv_sta_rc_update+0x7c/0x160 [mac80211 > c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c] > [18177.576613] ieee80211_chan_bw_change+0xfb/0x110 [mac80211 > c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c] The ieee80211_ops::sta_rc_update must be atomic, because ieee80211_chan_bw_change() holds rcu_read lock while calling drv_sta_rc_update(), so I think a simple way is to create a work to do original things. I will make a fix later. Ping-Ke