2023-05-07 19:26:32

by Larry Finger

[permalink] [raw]
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.576316] ------------[ cut here ]------------
[18177.576320] Voluntary context switch within RCU read-side critical section!
[18177.576323] WARNING: CPU: 0 PID: 4621 at kernel/rcu/tree_plugin.h:318
rcu_note_context_switch+0x571/0x5d0
[18177.576330] Modules linked in: rtw89_8852be(E) rtw89_8852b(E) rtw89_pci(E)
ccm(E) rfcomm(E) rpcsec_gss_krb5(E) auth_rpcgss(E) nfsv4(E) dns_resolver(E)
nfs(E) lockd(E) grace(E) sunrpc(E) fscache(E) netfs(E) af_packet(E) cmac(E)
algif_hash(E) algif_skcipher(E) af_alg(E) bnep(E) vboxnetadp(OE) vboxnetflt(OE)
qrtr(E) btusb(E) btrtl(E) btbcm(E) vboxdrv(OE) btintel(E) btmtk(E) bluetooth(E)
rtw88_8822bu(E) rtw_usb(OE) rtw_8822b(OE) rtw_core(OE) ecdh_generic(E)
binfmt_misc(E) nls_iso8859_1(E) nls_cp437(E) vfat(E) fat(E) intel_rapl_msr(E)
intel_rapl_common(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) coretemp(E)
kvm_intel(E) iTCO_wdt(E) iwlmvm(E) spi_intel_platform(E) intel_pmc_bxt(E)
rtw89_core(E) snd_hda_codec_realtek(E) spi_intel(E) iTCO_vendor_support(E)
mei_hdcp(E) mei_pxp(E) snd_hda_codec_generic(E) ledtrig_audio(E) kvm(E)
snd_hda_codec_hdmi(E) irqbypass(E) mac80211(E) pcspkr(E) wmi_bmof(E) iwlwifi(E)
snd_hda_intel(E) snd_intel_dspcfg(E) snd_hda_codec(E) libarc4(E) snd_hwdep(E)
lpc_ich(E) snd_hda_core(E) cfg80211(E)
[18177.576372] snd_pcm(E) toshiba_acpi(E) snd_timer(E) mei_me(E) snd(E)
sparse_keymap(E) e1000e(E) tiny_power_button(E) soundcore(E) mei(E) thermal(E)
industrialio(E) toshiba_bluetooth(E) tpm_infineon(E) battery(E) button(E) ac(E)
joydev(E) fuse(E) configfs(E) dmi_sysfs(E) ext4(E) mbcache(E) jbd2(E)
crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) polyval_clmulni(E)
polyval_generic(E) ghash_clmulni_intel(E) sha512_ssse3(E) i915(E)
i2c_algo_bit(E) drm_buddy(E) drm_display_helper(E) xhci_pci(E) rtsx_pci_sdmmc(E)
xhci_pci_renesas(E) drm_kms_helper(E) syscopyarea(E) sysfillrect(E) sysimgblt(E)
cec(E) aesni_intel(E) ttm(E) sr_mod(E) mmc_core(E) crypto_simd(E) ehci_pci(E)
xhci_hcd(E) cryptd(E) ehci_hcd(E) cdrom(E) rtsx_pci(E) drm(E) usbcore(E)
video(E) wmi(E) serio_raw(E) sg(E) dm_multipath(E) dm_mod(E) scsi_dh_rdac(E)
scsi_dh_emc(E) scsi_dh_alua(E) msr(E)
[18177.576406] Unloaded tainted modules: rtw89_8852b(E):1 rtw89_pci(E):1
rtw89_8852be(E):1 rtw_8822bu(OE):1 acpi_cpufreq(E):1 ie31200_edac(E):1 [last
unloaded: rtw89_8852b(E)]
[18177.576414] CPU: 0 PID: 4621 Comm: kworker/u16:2 Tainted: G W OE
6.4.0-rc0-gddc703714c0b-dirty #60 b8779e6b3528dc339549b3de720a59d95f1c4cf5
[18177.576417] Hardware name: TOSHIBA TECRA A50-A/TECRA A50-A, BIOS Version 4.50
09/29/2014
[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]
[18177.576651] ieee80211_change_chanctx+0x38/0x130 [mac80211
c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c]
[18177.576688] ieee80211_vif_use_reserved_switch+0x34e/0x900 [mac80211
c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c]
[18177.576724] ieee80211_link_use_reserved_context+0x88/0xe0 [mac80211
c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c]
[18177.576760] ieee80211_chswitch_work+0x95/0x170 [mac80211
c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c]
[18177.576798] process_one_work+0x201/0x410
[18177.576800] worker_thread+0x4a/0x3b0
[18177.576802] ? process_one_work+0x410/0x410
[18177.576803] kthread+0xe1/0x110
[18177.576805] ? kthread_complete_and_exit+0x20/0x20
[18177.576807] ret_from_fork+0x1f/0x30
[18177.576810] </TASK>
[18177.576811] ---[ end trace 0000000000000000 ]---

Thanks,

Larry


2023-05-08 01:00:34

by Larry Finger

[permalink] [raw]
Subject: Re: RCU WARNING Splat from rtw8822bu

On 5/7/23 19:49, Ping-Ke Shih wrote:
> 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.

Thanks.

I forgot to say that the WARNING did not cause the wifi connection to be
dropped, thus the issue is one of log spamming, not stability.

Larry

2023-05-08 01:01:10

by Ping-Ke Shih

[permalink] [raw]
Subject: RE: RCU WARNING Splat from rtw8822bu



> -----Original Message-----
> From: Larry Finger <[email protected]> On Behalf Of Larry Finger
> Sent: Monday, May 8, 2023 3:24 AM
> To: Sascha Hauer <[email protected]>; Ping-Ke Shih <[email protected]>
> Cc: linux-wireless <[email protected]>
> 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

2023-05-08 09:01:19

by Ping-Ke Shih

[permalink] [raw]
Subject: RE: RCU WARNING Splat from rtw8822bu



> -----Original Message-----
> From: Larry Finger <[email protected]> On Behalf Of Larry Finger
> Sent: Monday, May 8, 2023 8:56 AM
> To: Ping-Ke Shih <[email protected]>; Sascha Hauer <[email protected]>
> Cc: linux-wireless <[email protected]>
> Subject: Re: RCU WARNING Splat from rtw8822bu
>
> On 5/7/23 19:49, Ping-Ke Shih wrote:
> > 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.
>
> Thanks.
>
> I forgot to say that the WARNING did not cause the wifi connection to be
> dropped, thus the issue is one of log spamming, not stability.
>

I have sent a fix [1]. Please try if it works in your side.

[1] https://lore.kernel.org/linux-wireless/[email protected]/T/#u

Thank you
Ping-Ke

2023-05-08 09:24:15

by Johannes Berg

[permalink] [raw]
Subject: Re: RCU WARNING Splat from rtw8822bu

On Sun, 2023-05-07 at 14:24 -0500, Larry Finger wrote:
> 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.

It must've been connected at the time, but I guess the reason you only
saw it once is that it happens only on CSA:

> [18177.576760] ieee80211_chswitch_work+0x95/0x170 [mac80211
> c276bd403dbb068b66ac9ffb0a8f27d6e63e5c7c]
>

johannes