On 1/20/2025 1:48 AM, Aditya Kumar Singh wrote: > With hardware grouping, there is a kernel crash with signature - > > $ rmmod ath12k.ko > Unable to handle kernel paging request at virtual address 000000000000d1a8 > [...] > Call trace: > ath12k_reg_free+0x14/0x74 [ath12k] (P) > ath12k_core_hw_group_destroy+0x7c/0xb4 [ath12k] (L) > ath12k_core_hw_group_destroy+0x7c/0xb4 [ath12k] > ath12k_core_deinit+0xd8/0x124 [ath12k] > ath12k_pci_remove+0x6c/0x130 [ath12k] > pci_device_remove+0x44/0xe8 > device_remove+0x4c/0x80 > device_release_driver_internal+0x1d0/0x22c > driver_detach+0x50/0x98 > bus_remove_driver+0x70/0xf4 > driver_unregister+0x30/0x60 > pci_unregister_driver+0x24/0x9c > ath12k_pci_exit+0x18/0x24 [ath12k] > __arm64_sys_delete_module+0x1a0/0x2a8 > invoke_syscall+0x48/0x110 > el0_svc_common.constprop.0+0x40/0xe0 > do_el0_svc+0x1c/0x28 > el0_svc+0x30/0xd0 > el0t_64_sync_handler+0x10c/0x138 > el0t_64_sync+0x198/0x19c > Code: a9bd7bfd 910003fd a9025bf5 91402015 (f968d6a1) > ---[ end trace 0000000000000000 ]--- > Segmentation fault > > This series aims to fix this stability issue. With this now, 100+ iteration > of rmmod and insmod works perfectly. > > Also, firmware recovery with grouping is not working fine. Randomly, some > NULL pointer crash or another firmware assert is seen. This series aims to > fix that as well. > > With this in place now, 100+ iteration of firmware recovery with one 3 link > AP MLD up works fine. > > --- > Changes in v2: > - Rebased on ToT. > - No changes in 1-4, 6-10. > - Removed regd_freed flag in 5. > - Link to v1: https://lore.kernel.org/r/20250109-fix_reboot_issues_with_hw_grouping-v1-0-fb39ec03451e@xxxxxxxxxxx > > --- > Aditya Kumar Singh (10): > wifi: ath12k: prevent race condition in ath12k_core_hw_group_destroy() > wifi: ath12k: add reference counting for core attachment to hardware group > wifi: ath12k: fix failed to set mhi state error during reboot with hardware grouping > wifi: ath12k: fix firmware assert during reboot with hardware grouping > wifi: ath12k: fix SLUB BUG - Object already free in ath12k_reg_free() > wifi: ath12k: fix ath12k_core_pre_reconfigure_recovery() with grouping > wifi: ath12k: fix ATH12K_FLAG_REGISTERED flag handling > wifi: ath12k: handle ath12k_core_restart() with hardware grouping > wifi: ath12k: handle ath12k_core_reset() with hardware grouping > wifi: ath12k: reset MLO global memory during recovery > > drivers/net/wireless/ath/ath12k/core.c | 115 ++++++++++++++++++++++++++++++--- > drivers/net/wireless/ath/ath12k/core.h | 15 +---- > drivers/net/wireless/ath/ath12k/mac.c | 6 -- > drivers/net/wireless/ath/ath12k/pci.c | 28 +++++++- > drivers/net/wireless/ath/ath12k/qmi.c | 24 ++++++- > drivers/net/wireless/ath/ath12k/qmi.h | 4 +- > drivers/net/wireless/ath/ath12k/reg.c | 4 +- > 7 files changed, 163 insertions(+), 33 deletions(-) > --- > base-commit: e7ef944b3e2c31b608800925e784f67596375770 > change-id: 20241218-fix_reboot_issues_with_hw_grouping-0c2d367a587b > Fails to apply to current ath/main * Applying v2_20250120_quic_adisi_wifi_ath12k_fixes_for_rmmod_and_recovery_issues_with_hardware_grouping.mbx Applying: wifi: ath12k: prevent race condition in ath12k_core_hw_group_destroy() Applying: wifi: ath12k: add reference counting for core attachment to hardware group Using index info to reconstruct a base tree... M drivers/net/wireless/ath/ath12k/core.c M drivers/net/wireless/ath/ath12k/core.h Falling back to patching base and 3-way merge... Auto-merging drivers/net/wireless/ath/ath12k/core.h CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath12k/core.h Auto-merging drivers/net/wireless/ath/ath12k/core.c Recorded preimage for 'drivers/net/wireless/ath/ath12k/core.h' error: Failed to merge in the changes. Patch failed at 0002 wifi: ath12k: add reference counting for core attachment to hardware group