Skip to contentSkip to conversation

RIP at qmi_handle_release with ath12k on a MSI x870e Carbon WiFi - mainline kernel.

linux-mainline-6.17rc3-1-x86_64 [email protected] 2 participants 6 messages Aug 31, 2025 – Sep 2, 2025 Qualcomm ATH12K wireless driver

lore
Share & tools
lore
#1 lore raw
Quoted 10 lines · On 8/31/2025 11:36 PM, [email protected] wrote:

Had the joy to build a new machine.
I had to switch to mainline kernel to boot at all.
Blacklisting with kernel 6.16 allows me to boot, or using latest mainline kernel.

Hardware is NEW.

Log: https://0x0.st/KH4D.txt
Alternative: https://paste.gg/p/anonymous/52779beef5144f2fbe74be2673951f50

What should I do?

Could you try if below diff can fix your issue:

drivers/net/wireless/ath/ath12k/core.c +17 -5
index 8d2839cf1de3..bc40958e885d 100644
@@ -2109,14 +2109,27 @@ static int ath12k_core_hw_group_create(struct ath12k_hw_group *ag)
                ret = ath12k_core_soc_create(ab);
                if (ret) {
                        mutex_unlock(&ab->core_lock);
-                       ath12k_err(ab, "failed to create soc core: %d\n", ret);
-                       return ret;
+                       ath12k_err(ab, "failed to create soc %d core: %d\n", i, ret);
+                       goto destroy;
                }
 
                mutex_unlock(&ab->core_lock);
        }
 
        return 0;
+
+destroy:
+       for (i--; i >= 0; i--) {
+               ab = ag->ab[i];
+               if (!ab)
+                       continue;
+
+               mutex_lock(&ab->core_lock);
+               ath12k_core_soc_destroy(ab);
+               mutex_unlock(&ab->core_lock);
+       }
+
+       return ret;
 }
 
 void ath12k_core_hw_group_set_mlo_capable(struct ath12k_hw_group *ag)
@@ -2191,7 +2204,7 @@ int ath12k_core_init(struct ath12k_base *ab)
                if (ret) {
                        mutex_unlock(&ag->mutex);
                        ath12k_warn(ab, "unable to create hw group\n");
-                       goto err_destroy_hw_group;
+                       goto err_unassign_hw_group;
                }
        }
 
@@ -2199,8 +2212,7 @@ int ath12k_core_init(struct ath12k_base *ab)
 
        return 0;
 
-err_destroy_hw_group:
-       ath12k_core_hw_group_destroy(ab->ag);
+err_unassign_hw_group:
        ath12k_core_hw_group_unassign(ab);
 err_unregister_notifier:
        ath12k_core_panic_notifier_unregister(ab);
Quoted 1 line
#2 lore raw

Hello - the below diff fixes my issue.
I can finally boot/reboot/shutdown AND use my WiFi module - and not only Bluetooth.

Thank you so much!

Can you push the fix upstream?
Also maybe have a look at the linked issue which now would be resolved if patch is published?
https://bugzilla.kernel.org/show_bug.cgi?id=220518

Quoted 74 lines · Baochen Qiang
Quoted 10 lines · On 8/31/2025 11:36 PM, [email protected] wrote:

Had the joy to build a new machine.
I had to switch to mainline kernel to boot at all.
Blacklisting with kernel 6.16 allows me to boot, or using latest mainline kernel.

Hardware is NEW.

Log: https://0x0.st/KH4D.txt
Alternative: https://paste.gg/p/anonymous/52779beef5144f2fbe74be2673951f50

What should I do?

Could you try if below diff can fix your issue:

drivers/net/wireless/ath/ath12k/core.c +15 -2
index 8d2839cf1de3..bc40958e885d 100644
@@ -2109,14 +2109,27 @@ static int ath12k_core_hw_group_create(struct
 ath12k_hw_group *ag)
                ret = ath12k_core_soc_create(ab);
                if (ret) {
                        mutex_unlock(&ab->core_lock);
-                       ath12k_err(ab, "failed to create soc core: 
 %d\n", ret);
-                       return ret;
+                       ath12k_err(ab, "failed to create soc %d core:
 %d\n", i, ret);
+                       goto destroy;
                }
 
                mutex_unlock(&ab->core_lock);
        }
 
        return 0;
+
+destroy:
+       for (i--; i >= 0; i--) {
+               ab = ag->ab[i];
+               if (!ab)
+                       continue;
+
+               mutex_lock(&ab->core_lock);
+               ath12k_core_soc_destroy(ab);
+               mutex_unlock(&ab->core_lock);
+       }
+
+       return ret;

}

void ath12k_core_hw_group_set_mlo_capable(struct ath12k_hw_group *ag)

drivers/net/wireless/ath/ath12k/core.c +2 -3
@@ -2191,7 +2204,7 @@ int ath12k_core_init(struct ath12k_base *ab)
                if (ret) {
                        mutex_unlock(&ag->mutex);
                        ath12k_warn(ab, "unable to create hw group\n");
-                       goto err_destroy_hw_group;
+                       goto err_unassign_hw_group;
                }
        }
 
@@ -2199,8 +2212,7 @@ int ath12k_core_init(struct ath12k_base *ab)
 
        return 0;
 
-err_destroy_hw_group:
-       ath12k_core_hw_group_destroy(ab->ag);
+err_unassign_hw_group:
        ath12k_core_hw_group_unassign(ab);
 err_unregister_notifier:
        ath12k_core_panic_notifier_unregister(ab);
Quoted 3 lines
#3 lore raw
Quoted 4 lines · On 9/2/2025 3:11 PM, [email protected] wrote:

Hello - the below diff fixes my issue.
I can finally boot/reboot/shutdown AND use my WiFi module - and not only Bluetooth.

Thank you so much!

Thank you for quick testing!

Would you mind providing a 'Tested-by:' tag such that I can include it in the patch?

Quoted 4 lines

Can you push the fix upstream?
Also maybe have a look at the linked issue which now would be resolved if patch is published?
https://bugzilla.kernel.org/show_bug.cgi?id=220518

This seems the same issue, so yeah I think it should be resolved with the diff here.

Quoted 75 lines · Baochen Qiang
Quoted 73 lines · On 8/31/2025 11:36 PM, [email protected] wrote:
Quoted 10 lines

Had the joy to build a new machine.
I had to switch to mainline kernel to boot at all.
Blacklisting with kernel 6.16 allows me to boot, or using latest mainline kernel.

Hardware is NEW.

Log: https://0x0.st/KH4D.txt
Alternative: https://paste.gg/p/anonymous/52779beef5144f2fbe74be2673951f50

What should I do?

Could you try if below diff can fix your issue:

drivers/net/wireless/ath/ath12k/core.c +15 -2
index 8d2839cf1de3..bc40958e885d 100644
@@ -2109,14 +2109,27 @@ static int ath12k_core_hw_group_create(struct
 ath12k_hw_group *ag)
                 ret = ath12k_core_soc_create(ab);
                 if (ret) {
                         mutex_unlock(&ab->core_lock);
-                       ath12k_err(ab, "failed to create soc core: %d\n", ret);
-                       return ret;
+                       ath12k_err(ab, "failed to create soc %d core:
 %d\n", i, ret);
+                       goto destroy;
                 }
 
                 mutex_unlock(&ab->core_lock);
         }
 
         return 0;
+
+destroy:
+       for (i--; i >= 0; i--) {
+               ab = ag->ab[i];
+               if (!ab)
+                       continue;
+
+               mutex_lock(&ab->core_lock);
+               ath12k_core_soc_destroy(ab);
+               mutex_unlock(&ab->core_lock);
+       }
+
+       return ret;
  }

 void ath12k_core_hw_group_set_mlo_capable(struct ath12k_hw_group *ag)

drivers/net/wireless/ath/ath12k/core.c +2 -3
@@ -2191,7 +2204,7 @@ int ath12k_core_init(struct ath12k_base *ab)
                 if (ret) {
                         mutex_unlock(&ag->mutex);
                         ath12k_warn(ab, "unable to create hw group\n");
-                       goto err_destroy_hw_group;
+                       goto err_unassign_hw_group;
                 }
         }
 
@@ -2199,8 +2212,7 @@ int ath12k_core_init(struct ath12k_base *ab)
 
         return 0;
 
-err_destroy_hw_group:
-       ath12k_core_hw_group_destroy(ab->ag);
+err_unassign_hw_group:
         ath12k_core_hw_group_unassign(ab);

 err_unregister_notifier:
        ath12k_core_panic_notifier_unregister(ab);

Quoted 1 line
author Tested-by
#4 lore raw
Quoted 95 lines · Baochen Qiang
Quoted 4 lines · On 9/2/2025 3:11 PM, [email protected] wrote:

Hello - the below diff fixes my issue.
I can finally boot/reboot/shutdown AND use my WiFi module - and not only Bluetooth.

Thank you so much!

Thank you for quick testing!

Would you mind providing a 'Tested-by:' tag such that I can include it in the patch?

Quoted 4 lines

Can you push the fix upstream?
Also maybe have a look at the linked issue which now would be resolved if patch is published?
https://bugzilla.kernel.org/show_bug.cgi?id=220518

This seems the same issue, so yeah I think it should be resolved with the diff here.

Quoted 76 lines · Baochen Qiang
Quoted 74 lines · On 8/31/2025 11:36 PM, [email protected] wrote:
Quoted 10 lines

Had the joy to build a new machine.
I had to switch to mainline kernel to boot at all.
Blacklisting with kernel 6.16 allows me to boot, or using latest mainline kernel.

Hardware is NEW.

Log: https://0x0.st/KH4D.txt
Alternative: https://paste.gg/p/anonymous/52779beef5144f2fbe74be2673951f50

What should I do?

Could you try if below diff can fix your issue:

drivers/net/wireless/ath/ath12k/core.c +15 -2
index 8d2839cf1de3..bc40958e885d 100644
@@ -2109,14 +2109,27 @@ static int ath12k_core_hw_group_create(struct
 ath12k_hw_group *ag)
                 ret = ath12k_core_soc_create(ab);
                 if (ret) {
                         mutex_unlock(&ab->core_lock);
-                       ath12k_err(ab, "failed to create soc core: 
 %d\n", ret);
-                       return ret;
+                       ath12k_err(ab, "failed to create soc %d core:
 %d\n", i, ret);
+                       goto destroy;
                 }
 
                 mutex_unlock(&ab->core_lock);
         }
 
         return 0;
+
+destroy:
+       for (i--; i >= 0; i--) {
+               ab = ag->ab[i];
+               if (!ab)
+                       continue;
+
+               mutex_lock(&ab->core_lock);
+               ath12k_core_soc_destroy(ab);
+               mutex_unlock(&ab->core_lock);
+       }
+
+       return ret;

 }

 void ath12k_core_hw_group_set_mlo_capable(struct ath12k_hw_group *ag)

drivers/net/wireless/ath/ath12k/core.c +2 -3
@@ -2191,7 +2204,7 @@ int ath12k_core_init(struct ath12k_base *ab)
                 if (ret) {
                         mutex_unlock(&ag->mutex);
                         ath12k_warn(ab, "unable to create hw group\n");
-                       goto err_destroy_hw_group;
+                       goto err_unassign_hw_group;
                 }
         }
 
@@ -2199,8 +2212,7 @@ int ath12k_core_init(struct ath12k_base *ab)
 
         return 0;
 
-err_destroy_hw_group:
-       ath12k_core_hw_group_destroy(ab->ag);
+err_unassign_hw_group:
         ath12k_core_hw_group_unassign(ab);

 err_unregister_notifier:
        ath12k_core_panic_notifier_unregister(ab);

Quoted 1 line