ath.git update for v7.3-rc7

In ath12k, revert the panic handler that landed in v6.11 since it can
 perform a voluntary context switch within an RCU read-side critical
 section.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ/mtSHzPUi16IfDEksFbugiYzLewUCasUBogAKCRAsFbugiYzL
 e0isAQChqOuzPK1KsBAIGKuSXbSakevCJZt9TES5wFCIEvCqsAD/adC6E3WSeCHV
 kDVf45C2cohaZzu54YLduTQ56Ltyrgc=
 =pwVw
 -----END PGP SIGNATURE-----

Merge tag 'ath-current-20261006' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath

Jeff Johnson says:
==================
ath.git update for v7.3-rc7

In ath12k, revert the panic handler that landed in v6.11 since it can
perform a voluntary context switch within an RCU read-side critical
section.
==================

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2026-10-06 18:00:35 +02:00
commit c96334f670
4 changed files with 1 additions and 52 deletions

View File

@ -1776,29 +1776,6 @@ int ath12k_core_pre_init(struct ath12k_base *ab)
return 0;
}
static int ath12k_core_panic_handler(struct notifier_block *nb,
unsigned long action, void *data)
{
struct ath12k_base *ab = container_of(nb, struct ath12k_base,
panic_nb);
return ath12k_hif_panic_handler(ab);
}
static int ath12k_core_panic_notifier_register(struct ath12k_base *ab)
{
ab->panic_nb.notifier_call = ath12k_core_panic_handler;
return atomic_notifier_chain_register(&panic_notifier_list,
&ab->panic_nb);
}
static void ath12k_core_panic_notifier_unregister(struct ath12k_base *ab)
{
atomic_notifier_chain_unregister(&panic_notifier_list,
&ab->panic_nb);
}
static inline
bool ath12k_core_hw_group_create_ready(struct ath12k_hw_group *ag)
{
@ -2214,18 +2191,13 @@ int ath12k_core_init(struct ath12k_base *ab)
struct ath12k_hw_group *ag;
int ret;
ret = ath12k_core_panic_notifier_register(ab);
if (ret)
ath12k_warn(ab, "failed to register panic handler: %d\n", ret);
mutex_lock(&ath12k_hw_group_mutex);
ag = ath12k_core_hw_group_assign(ab);
if (!ag) {
mutex_unlock(&ath12k_hw_group_mutex);
ath12k_warn(ab, "unable to get hw group\n");
ret = -ENODEV;
goto err_unregister_notifier;
return -ENODEV;
}
mutex_unlock(&ath12k_hw_group_mutex);
@ -2250,8 +2222,6 @@ int ath12k_core_init(struct ath12k_base *ab)
err_unassign_hw_group:
ath12k_core_hw_group_unassign(ab);
err_unregister_notifier:
ath12k_core_panic_notifier_unregister(ab);
return ret;
}
@ -2260,7 +2230,6 @@ void ath12k_core_deinit(struct ath12k_base *ab)
{
ath12k_core_hw_group_destroy(ab->ag);
ath12k_core_hw_group_unassign(ab);
ath12k_core_panic_notifier_unregister(ab);
}
void ath12k_core_free(struct ath12k_base *ab)

View File

@ -15,7 +15,6 @@
#include <linux/ctype.h>
#include <linux/firmware.h>
#include <linux/of_reserved_mem.h>
#include <linux/panic_notifier.h>
#include <linux/average.h>
#include <linux/of.h>
#include <linux/rhashtable.h>
@ -1139,8 +1138,6 @@ struct ath12k_base {
#endif /* CONFIG_ACPI */
struct notifier_block panic_nb;
struct ath12k_hw_group *ag;
struct ath12k_wsi_info wsi_info;
enum ath12k_qmi_firmware_mode fw_mode;

View File

@ -30,7 +30,6 @@ struct ath12k_hif_ops {
void (*ce_irq_enable)(struct ath12k_base *ab);
void (*ce_irq_disable)(struct ath12k_base *ab);
void (*get_ce_msi_idx)(struct ath12k_base *ab, u32 ce_id, u32 *msi_idx);
int (*panic_handler)(struct ath12k_base *ab);
void (*coredump_download)(struct ath12k_base *ab);
};
@ -149,14 +148,6 @@ static inline void ath12k_hif_power_down(struct ath12k_base *ab, bool is_suspend
ab->hif.ops->power_down(ab, is_suspend);
}
static inline int ath12k_hif_panic_handler(struct ath12k_base *ab)
{
if (!ab->hif.ops->panic_handler)
return NOTIFY_DONE;
return ab->hif.ops->panic_handler(ab);
}
static inline void ath12k_hif_coredump_download(struct ath12k_base *ab)
{
if (ab->hif.ops->coredump_download)

View File

@ -1484,13 +1484,6 @@ void ath12k_pci_power_down(struct ath12k_base *ab, bool is_suspend)
ath12k_pci_sw_reset(ab_pci->ab, false);
}
static int ath12k_pci_panic_handler(struct ath12k_base *ab)
{
ath12k_pci_sw_reset(ab, false);
return NOTIFY_OK;
}
static const struct ath12k_hif_ops ath12k_pci_hif_ops = {
.start = ath12k_pci_start,
.stop = ath12k_pci_stop,
@ -1508,7 +1501,6 @@ static const struct ath12k_hif_ops ath12k_pci_hif_ops = {
.ce_irq_enable = ath12k_pci_hif_ce_irq_enable,
.ce_irq_disable = ath12k_pci_hif_ce_irq_disable,
.get_ce_msi_idx = ath12k_pci_get_ce_msi_idx,
.panic_handler = ath12k_pci_panic_handler,
#ifdef CONFIG_ATH12K_COREDUMP
.coredump_download = ath12k_pci_coredump_download,
#endif