On Tue, 2024-07-16 at 01:19 +0000, Ping-Ke Shih wrote: > On Mon, 2024-07-15 at 14:26 +0300, Bitterblue Smith wrote: > > On 15/07/2024 14:05, Bitterblue Smith wrote: > > > Hi, > > > > > > To reproduce the problem, you need a computer with two wifi > > > devices supported by rtw88. It's especially easy to notice > > > the problem if one of the devices is USB and the other is PCI, > > > because the PCI device will have various values in the > > > registers 0x300..0x3ff, but the USB device will have all > > > 0xeaeaeaea there. > > > > > > 1. Let's assume the driver for the PCI device is already loaded. > > > I have RTL8822CE. > > > > > > 2. Mount debugfs: > > > > > > # mount -t debugfs none /sys/kernel/debug > > > > > > 3. Check page 0x300: > > > > > > # cat /sys/kernel/debug/ieee80211/phy0/rtw88/mac_3 > > > 00000300 f7138000 33330000 ffffb000 00000000 > > > ..... > > > > > > 4. Plug the USB device. I used RTL8811CU. > > > > > > 5. Check page 0x300 again: > > > > > > # cat /sys/kernel/debug/ieee80211/phy0/rtw88/mac_3 > > > 00000300 eaeaeaea eaeaeaea eaeaeaea eaeaeaea > > > ..... > > > > > > 6. Bonus: unload rtw88_8821cu and check page 0x300 again to get > > > a null pointer dereference: > > > > > > # rmmod rtw88_8821cu > > > # cat /sys/kernel/debug/ieee80211/phy0/rtw88/mac_3 > > > > I forgot to say: my kernel is 6.9.8-arch1-1 from Arch Linux. > > The problem also happens with kernel 6.9.8 plus rtw88 from > > rtw-next. > > This limitation is existing since initial driver. > > To read a range of large registers area, for example, we need to > a range via write operation and store as a private data, and > then use read operation with private data to read registers. > > The limitation is because the private data is static variable. > A possible solution is to duplicate static variable into rtwdev. > Not sure if it is worth to adjust codes for debug purpose only. > > Another easier solution is to avoid creating debugfs for second > adapter. How do you think? > Think a little bit further. I will try to duplicate static variables to support multiple adapters.