* [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2
@ 2026-09-13 8:35 Takashi Iwai
2026-09-13 8:39 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2026-09-13 8:35 UTC (permalink / raw)
To: Chris Lew
Cc: Deepak Kumar Singh, Pranav Mahesh Phansalkar, netdev,
linux-wireless, linux-kernel, regressions
[-- Attachment #1: Type: text/plain, Size: 809 bytes --]
Hi,
on 7.3-rc2, the suspend/resume of ath12k WiFi on Lenovo Thinkpad T14s
Gen6 AMD model is broken. Upon suspend, the network isn't recovered,
and the desktop got eventually frozen.
The git bisect pointed to the commit
544d85de4dc22c01badfd8cefa59829ce35c4858
net: qrtr: Send HELLO message on endpoint register
and reverting this fixed the problem.
Below is the (stripped) dmesg output after the resume showing the
problem.
As far as I understand, the problem seems to be the change of the code
flow: ath12k uses mhi_power_down_keep_dev() during suspend, so the
qcom_mhi_qrtr_remove() and *_probe() won't be called. This makes the
driver endlessly waiting for the HELLO handshake upon resume with the
commit above.
thanks,
Takashi
#regzbot introduced: 544d85de4dc22c01badfd8cefa59829ce35c4858
[-- Attachment #2: ath12-crash.txt --]
[-- Type: text/plain, Size: 16398 bytes --]
ath12k_wifi7_pci 0000:c2:00.0: BAR 0 [mem 0xb0600000-0xb07fffff 64bit]: assigned
ath12k_wifi7_pci 0000:c2:00.0: enabling device (0000 -> 0002)
ath12k_wifi7_pci 0000:c2:00.0: Wi-Fi 7 Hardware name: wcn7850 hw2.0
ath12k_wifi7_pci 0000:c2:00.0: MSI vectors: 16
(snip)
ath12k_wifi7_pci 0000:c2:00.0: qmi dma allocation failed (7274496 B type 1), will try later with small size
ath12k_wifi7_pci 0000:c2:00.0: chip_id 0x2 chip_family 0x4 board_id 0xff soc_id 0x40170200
ath12k_wifi7_pci 0000:c2:00.0: fw_version 0x1103006c fw_build_timestamp 2026-03-06 09:10 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SILICONZ_UPSTREAM-3
ath12k_wifi7_pci 0000:c2:00.0: invalid ACPI DSM TAS config size: 1
ath12k_wifi7_pci 0000:c2:00.0: failed to get ACPI TAS config table: -22
(snip)
ath12k_wifi7_pci 0000:c2:00.0 wlp194s0: renamed from wlan0
....
PM: suspend entry (s2idle)
Filesystems sync: 0.029 seconds
Freezing user space processes
Freezing user space processes completed (elapsed 0.002 seconds)
OOM killer disabled.
Freezing remaining freezable tasks
Freezing remaining freezable tasks completed (elapsed 0.000 seconds)
printk: Suspending console(s) (use no_console_suspend to debug)
....
ath12k_wifi7_pci 0000:c2:00.0: timeout while waiting for restart complete
ath12k_wifi7_pci 0000:c2:00.0: failed to resume core: -110
ath12k_wifi7_pci 0000:c2:00.0: PM: dpm_run_callback(): pci_pm_resume returns -110
ath12k_wifi7_pci 0000:c2:00.0: PM: failed to resume async: error -110
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable dynamic bw: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
------------[ cut here ]------------
Hardware became unavailable upon resume. This could be a software issue prior to suspend or a hardware issue.
WARNING: net/mac80211/util.c:1957 at ieee80211_reconfig+0x9e/0x1f40 [mac80211], CPU#2: kworker/u65:27/116237
Modules linked in: uas(E) usb_storage(E) sd_mod(E) scsi_dh_emc(E) scsi_dh_rdac(E) scsi_dh_alua(E) sg(E) scsi_mod(E) scsi_common(E) cuse(E) tun(E) snd_seq_dummy(E) snd_hrtimer(E) snd_seq(E) rfcomm(E) hid_plantronics(E) nft_fib_inet(E) nft_fib_ipv4(E) nft_fib_ipv6(E) nft_fib(E) nft_reject_inet(E) nf_reject_ipv4(E) nf_reject_ipv6(E) nft_reject(E) af_packet(E) nft_ct(E) nft_chain_nat(E) nf_nat(E) nf_conntrack(E) nf_defrag_ipv6(E) nf_defrag_ipv4(E) ip_set(E) algif_hash(E) algif_skcipher(E) af_alg(E) bnep(E) dm_mod(E) binfmt_misc(E) nls_iso8859_1(E) nls_cp437(E) vfat(E) fat(E) qrtr_mhi(E) r8153_ecm(E) cdc_ether(E) usbnet(E) snd_acp_legacy_mach(E) snd_acp_mach(E) snd_soc_nau8821(E) snd_acp3x_rn(E) snd_acp70(E) snd_acp_i2s(E) snd_acp_pdm(E) snd_soc_dmic(E) snd_acp_pcm(E) btusb(E) snd_sof_amd_acp70(E) snd_usb_audio(E) snd_sof_amd_acp63(E) btrtl(E) snd_sof_amd_vangogh(E) btintel(E) snd_usbmidi_lib(E) snd_sof_amd_rembrandt(E) snd_ump(E) btbcm(E) r8152(E) snd_sof_amd_renoir(E) btmtk(E) snd_rawmi
di(E) qrtr(E) mii(E)
snd_sof_amd_acp(E) snd_seq_device(E) ath12k_wifi7(E) snd_sof_pci(E) bluetooth(E) snd_sof_xtensa_dsp(E) ath12k(E) snd_ctl_led(E) snd_sof(E) intel_rapl_msr(E) intel_rapl_common(E) snd_sof_utils(E) snd_hda_codec_alc269(E) mhi(E) snd_pci_ps(E) snd_hda_scodec_component(E) uvcvideo(E) snd_soc_acpi_amd_match(E) qmi_helpers(E) snd_hda_codec_atihdmi(E) snd_hda_codec_realtek_lib(E) snd_soc_sdca(E) kvm_amd(E) videobuf2_vmalloc(E) snd_hda_codec_generic(E) snd_hda_codec_hdmi(E) snd_soc_core(E) mac80211(E) videobuf2_memops(E) uvc(E) snd_hda_intel(E) videobuf2_v4l2(E) snd_compress(E) kvm(E) snd_hda_codec(E) snd_acp_pci(E) videodev(E) thinkpad_acpi(E) snd_amd_acpi_mach(E) snd_intel_dspcfg(E) spd5118(E) gpio_keys(E) think_lmi(E) irqbypass(E) snd_acp_legacy_common(E) libarc4(E) videobuf2_common(E) snd_hda_core(E) pcspkr(E) mc(E) firmware_attributes_class(E) wmi_bmof(E) battery(E) snd_pci_acp6x(E) sparse_keymap(E) ac(E) snd_hwdep(E) cfg80211(E) snd_pcm(E) snd_pci_acp5x(E) snd_timer(E) snd_rn_pci_acp3x
(E) fan(E)
snd_acp_config(E) amd_pmc(E) snd(E) soc_button_array(E) snd_soc_acpi(E) i2c_piix4(E) rfkill(E) joydev(E) k10temp(E) thermal(E) i2c_smbus(E) snd_pci_acp3x(E) soundcore(E) fuse(E) efi_pstore(E) dmi_sysfs(E) ip_tables(E) x_tables(E) ext4(E) mbcache(E) jbd2(E) usbhid(E) amdxdna(E) amdgpu(E) drm_buddy(E) amdxcp(E) i2c_algo_bit(E) drm_ttm_helper(E) ttm(E) drm_exec(E) drm_panel_backlight_quirks(E) drm_suballoc_helper(E) hid_multitouch(E) hid_generic(E) nvme(E) drm_display_helper(E) ucsi_acpi(E) xhci_pci(E) typec_ucsi(E) cec(E) roles(E) nvme_core(E) amd_pmf(E) video(E) xhci_hcd(E) rc_core(E) nvme_keyring(E) amdtee(E) typec(E) aesni_intel(E) gf128mul(E) amd_sfh(E) ccp(E) sp5100_tco(E) usbcore(E) gpu_sched(E) nvme_auth(E) crc16(E) thunderbolt(E) wmi(E) button(E) i2c_hid_acpi(E) tee(E) i2c_hid(E) serio_raw(E) br_netfilter(E) bridge(E) stp(E) llc(E) nf_tables(E) msr(E) i2c_dev(E) efivarfs(E)
Unloaded tainted modules: snd_seq_midi_event(E):1 snd_seq_oss(E):1 [last unloaded: snd_seq_midi_event(E)]
CPU: 2 UID: 0 PID: 116237 Comm: kworker/u65:27 Tainted: G E 7.3.0-rc2-test2+ #729 PREEMPT(full) 245c2cda426ab8fbe50e1a5e242c600fed149e78
Tainted: [E]=UNSIGNED_MODULE
Hardware name: LENOVO 21M2S03K00/21M2S03K00, BIOS R2NET44W (1.18 ) 01/28/2026
Workqueue: async async_run_entry_fn
RIP: 0010:ieee80211_reconfig+0x9e/0x1f40 [mac80211]
Code: d5 05 00 00 00 4c 89 df 4c 89 1c 24 e8 fb 35 fb ff 4c 8b 1c 24 85 c0 89 c3 0f 84 82 03 00 00 4c 89 1c 24 48 8d 3d 32 8b 1e 00 <67> 48 0f b9 3a 4c 8b 1c 24 eb 3e 84 c0 0f 85 f4 01 00 00 41 c6 83
RSP: 0018:ffffd0ae25a73c58 EFLAGS: 00010286
RAX: 00000000fffffff5 RBX: 00000000fffffff5 RCX: 0000000000000086
RDX: 00000000fffffff5 RSI: 0000000000000086 RDI: ffffffffc26ba360
RBP: ffff8b3604f403e0 R08: 0000000000000000 R09: 3fffffffffff7fff
R10: ffffffff89ade780 R11: ffff8b3604f409c0 R12: ffffffff88b73088
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000001
FS: 0000000000000000(0000) GS:ffff8b44148c0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000561dcde865d0 CR3: 0000000f2583a000 CR4: 0000000000f50ef0
PKRU: 55555554
Call Trace:
<TASK>
? queue_work_node+0xf9/0x110
? __async_schedule_node_domain+0xdd/0x140
? __pfx_dpm_async_with_cleanup+0x10/0x10
? __pfx_async_resume+0x10/0x10
? __mutex_lock.constprop.0+0xe1/0x910
? async_schedule_dev_nocall+0x8c/0xb0
wiphy_resume+0x89/0x1a0 [cfg80211 2570b52396ed1f7136cfda569804f3ee76261a22]
? __pfx_wiphy_resume+0x10/0x10 [cfg80211 2570b52396ed1f7136cfda569804f3ee76261a22]
dpm_run_callback+0x4e/0x160
device_resume+0x1a0/0x2c0
? __pfx_dpm_watchdog_handler+0x10/0x10
? select_fallback_rq+0x181/0x1e0
async_resume+0x21/0x30
async_run_entry_fn+0x36/0x160
process_one_work+0x1d2/0x3d0
worker_thread+0x1b7/0x330
? __pfx_worker_thread+0x10/0x10
kthread+0xe5/0x120
? __pfx_kthread+0x10/0x10
ret_from_fork+0x2aa/0x340
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
</TASK>
---[ end trace 0000000000000000 ]---
------------[ cut here ]------------
!local->started
WARNING: net/mac80211/driver-ops.c:41 at drv_stop+0xff/0x110 [mac80211], CPU#10: kworker/u65:27/116237
Modules linked in: uas(E) usb_storage(E) sd_mod(E) scsi_dh_emc(E) scsi_dh_rdac(E) scsi_dh_alua(E) sg(E) scsi_mod(E) scsi_common(E) cuse(E) tun(E) snd_seq_dummy(E) snd_hrtimer(E) snd_seq(E) rfcomm(E) hid_plantronics(E) nft_fib_inet(E) nft_fib_ipv4(E) nft_fib_ipv6(E) nft_fib(E) nft_reject_inet(E) nf_reject_ipv4(E) nf_reject_ipv6(E) nft_reject(E) af_packet(E) nft_ct(E) nft_chain_nat(E) nf_nat(E) nf_conntrack(E) nf_defrag_ipv6(E) nf_defrag_ipv4(E) ip_set(E) algif_hash(E) algif_skcipher(E) af_alg(E) bnep(E) dm_mod(E) binfmt_misc(E) nls_iso8859_1(E) nls_cp437(E) vfat(E) fat(E) qrtr_mhi(E) r8153_ecm(E) cdc_ether(E) usbnet(E) snd_acp_legacy_mach(E) snd_acp_mach(E) snd_soc_nau8821(E) snd_acp3x_rn(E) snd_acp70(E) snd_acp_i2s(E) snd_acp_pdm(E) snd_soc_dmic(E) snd_acp_pcm(E) btusb(E) snd_sof_amd_acp70(E) snd_usb_audio(E) snd_sof_amd_acp63(E) btrtl(E) snd_sof_amd_vangogh(E) btintel(E) snd_usbmidi_lib(E) snd_sof_amd_rembrandt(E) snd_ump(E) btbcm(E) r8152(E) snd_sof_amd_renoir(E) btmtk(E) snd_rawmi
di(E) qrtr(E) mii(E)
snd_sof_amd_acp(E) snd_seq_device(E) ath12k_wifi7(E) snd_sof_pci(E) bluetooth(E) snd_sof_xtensa_dsp(E) ath12k(E) snd_ctl_led(E) snd_sof(E) intel_rapl_msr(E) intel_rapl_common(E) snd_sof_utils(E) snd_hda_codec_alc269(E) mhi(E) snd_pci_ps(E) snd_hda_scodec_component(E) uvcvideo(E) snd_soc_acpi_amd_match(E) qmi_helpers(E) snd_hda_codec_atihdmi(E) snd_hda_codec_realtek_lib(E) snd_soc_sdca(E) kvm_amd(E) videobuf2_vmalloc(E) snd_hda_codec_generic(E) snd_hda_codec_hdmi(E) snd_soc_core(E) mac80211(E) videobuf2_memops(E) uvc(E) snd_hda_intel(E) videobuf2_v4l2(E) snd_compress(E) kvm(E) snd_hda_codec(E) snd_acp_pci(E) videodev(E) thinkpad_acpi(E) snd_amd_acpi_mach(E) snd_intel_dspcfg(E) spd5118(E) gpio_keys(E) think_lmi(E) irqbypass(E) snd_acp_legacy_common(E) libarc4(E) videobuf2_common(E) snd_hda_core(E) pcspkr(E) mc(E) firmware_attributes_class(E) wmi_bmof(E) battery(E) snd_pci_acp6x(E) sparse_keymap(E) ac(E) snd_hwdep(E) cfg80211(E) snd_pcm(E) snd_pci_acp5x(E) snd_timer(E) snd_rn_pci_acp3x
(E) fan(E)
snd_acp_config(E) amd_pmc(E) snd(E) soc_button_array(E) snd_soc_acpi(E) i2c_piix4(E) rfkill(E) joydev(E) k10temp(E) thermal(E) i2c_smbus(E) snd_pci_acp3x(E) soundcore(E) fuse(E) efi_pstore(E) dmi_sysfs(E) ip_tables(E) x_tables(E) ext4(E) mbcache(E) jbd2(E) usbhid(E) amdxdna(E) amdgpu(E) drm_buddy(E) amdxcp(E) i2c_algo_bit(E) drm_ttm_helper(E) ttm(E) drm_exec(E) drm_panel_backlight_quirks(E) drm_suballoc_helper(E) hid_multitouch(E) hid_generic(E) nvme(E) drm_display_helper(E) ucsi_acpi(E) xhci_pci(E) typec_ucsi(E) cec(E) roles(E) nvme_core(E) amd_pmf(E) video(E) xhci_hcd(E) rc_core(E) nvme_keyring(E) amdtee(E) typec(E) aesni_intel(E) gf128mul(E) amd_sfh(E) ccp(E) sp5100_tco(E) usbcore(E) gpu_sched(E) nvme_auth(E) crc16(E) thunderbolt(E) wmi(E) button(E) i2c_hid_acpi(E) tee(E) i2c_hid(E) serio_raw(E) br_netfilter(E) bridge(E) stp(E) llc(E) nf_tables(E) msr(E) i2c_dev(E) efivarfs(E)
Unloaded tainted modules: snd_seq_midi_event(E):1 snd_seq_oss(E):1 [last unloaded: snd_seq_midi_event(E)]
CPU: 10 UID: 0 PID: 116237 Comm: kworker/u65:27 Tainted: G W E 7.3.0-rc2-test2+ #729 PREEMPT(full) 245c2cda426ab8fbe50e1a5e242c600fed149e78
Tainted: [W]=WARN, [E]=UNSIGNED_MODULE
Hardware name: LENOVO 21M2S03K00/21M2S03K00, BIOS R2NET44W (1.18 ) 01/28/2026
Workqueue: async async_run_entry_fn
RIP: 0010:drv_stop+0xff/0x110 [mac80211]
Code: 48 8b 05 ac 56 25 00 48 85 c0 74 14 48 8b 78 08 48 89 de 89 54 24 04 e8 af a7 05 00 8b 54 24 04 65 48 ff 45 08 e9 30 ff ff ff <0f> 0b 48 83 c4 08 5b 5d c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90
RSP: 0018:ffffd0ae25a73b90 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff8b3604f409c0 RCX: 0000000000000282
RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffff8b3604f409c0
RBP: 0000000000000000 R08: 0000000000000000 R09: ffff8b35023ce958
R10: ffff8b3604f41328 R11: 0000000000000286 R12: ffff8b3604f409c0
R13: 0000000000000000 R14: 0000000000000001 R15: ffffd0ae25a73bd0
FS: 0000000000000000(0000) GS:ffff8b4414cc0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055d1e3644258 CR3: 0000000f2583a000 CR4: 0000000000f50ef0
PKRU: 55555554
Call Trace:
<TASK>
? ieee80211_stop_device+0x72/0x80 [mac80211 e18f41d534f84d432ebf007925056aa3424b1586]
ieee80211_do_stop+0x655/0xa60 [mac80211 e18f41d534f84d432ebf007925056aa3424b1586]
? __pfx_wait_rcu_exp_gp+0x10/0x10
ieee80211_stop+0x62/0xe0 [mac80211 e18f41d534f84d432ebf007925056aa3424b1586]
__dev_close_many+0xa8/0x1e0
netif_close_many+0xbc/0x1f0
netif_close+0x68/0xa0
dev_close+0x2a/0x80
cfg80211_shutdown_all_interfaces+0x4f/0x110 [cfg80211 2570b52396ed1f7136cfda569804f3ee76261a22]
wiphy_resume+0xc2/0x1a0 [cfg80211 2570b52396ed1f7136cfda569804f3ee76261a22]
? __pfx_wiphy_resume+0x10/0x10 [cfg80211 2570b52396ed1f7136cfda569804f3ee76261a22]
dpm_run_callback+0x4e/0x160
device_resume+0x1a0/0x2c0
? __pfx_dpm_watchdog_handler+0x10/0x10
? select_fallback_rq+0x181/0x1e0
async_resume+0x21/0x30
async_run_entry_fn+0x36/0x160
process_one_work+0x1d2/0x3d0
worker_thread+0x1b7/0x330
? __pfx_worker_thread+0x10/0x10
kthread+0xe5/0x120
? __pfx_kthread+0x10/0x10
ret_from_fork+0x2aa/0x340
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
</TASK>
---[ end trace 0000000000000000 ]---
ieee80211 phy0: PM: dpm_run_callback(): wiphy_resume [cfg80211] returns -11
ieee80211 phy0: PM: failed to resume async: error -11
OOM killer enabled.
Restarting tasks: Starting
Restarting tasks: Done
efivarfs: resyncing variable state
efivarfs: finished resyncing variable state
random: crng reseeded on system resumption
PM: suspend exit
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
fbcon: Taking over console
Console: switching to colour frame buffer device 240x75
ath12k_wifi7_pci 0000:c2:00.0: wmi command 16387 timeout
ath12k_wifi7_pci 0000:c2:00.0: failed to send WMI_PDEV_SET_PARAM cmd
ath12k_wifi7_pci 0000:c2:00.0: failed to enable PMF QOS: -11
ath12k_wifi7_pci 0000:c2:00.0: fail to start mac operations in pdev idx 0 ret -11
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2
2026-09-13 8:35 [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2 Takashi Iwai
@ 2026-09-13 8:39 ` Takashi Iwai
2026-09-13 9:03 ` Thorsten Leemhuis
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2026-09-13 8:39 UTC (permalink / raw)
To: Chris Lew
Cc: Deepak Kumar Singh, Pranav Mahesh Phansalkar, netdev,
linux-wireless, linux-kernel, regressions
On Sun, 13 Sep 2026 10:35:27 +0200,
Takashi Iwai wrote:
>
> Hi,
>
> on 7.3-rc2, the suspend/resume of ath12k WiFi on Lenovo Thinkpad T14s
> Gen6 AMD model is broken. Upon suspend, the network isn't recovered,
> and the desktop got eventually frozen.
>
> The git bisect pointed to the commit
> 544d85de4dc22c01badfd8cefa59829ce35c4858
> net: qrtr: Send HELLO message on endpoint register
>
> and reverting this fixed the problem.
>
> Below is the (stripped) dmesg output after the resume showing the
> problem.
>
> As far as I understand, the problem seems to be the change of the code
> flow: ath12k uses mhi_power_down_keep_dev() during suspend, so the
> qcom_mhi_qrtr_remove() and *_probe() won't be called. This makes the
> driver endlessly waiting for the HELLO handshake upon resume with the
> commit above.
... and below is a quick fix I tested. It seems working so far.
Takashi
-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] net: qrtr: Fix suspend/resume regression in HELLO handshake
Commit 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register")
broke suspend/resume for ath12k (wcn7850 over MHI/QRTR).
The new protocol from the commit works on first boot: the host sends a
proactive HELLO at endpoint registration, firmware replies, and ath12k
waits for fw_ready. However, ath12k uses mhi_power_down_keep_dev()
during suspend so that the MHI device (and the QRTR endpoint) remain
registered across the power cycle. This means qcom_mhi_qrtr_remove()
and qcom_mhi_qrtr_probe() are never called on resume: qrtr_endpoint_
register() never runs, and hello_sent stays true from the initial probe.
On resume, the wcn7850 firmware restarts and sends a HELLO to the host NS,
expecting a reply to re-establish the QRTR connection. Without that reply,
the firmware's handshake never completes, fw_ready is never sent, and
ath12k_core_resume() times out waiting for restart_completed (-ETIMEDOUT).
mac80211 then emits WARNINGs about hardware unavailability and cfg80211
tries to stop interfaces that were never started.
This patch fixes the regression by restoring say_hello() in
ctrl_cmd_hello() so the NS again replies to an incoming HELLO from a
remote node. Also the patch removes the proactive HELLO from
qrtr_endpoint_register(); with both the proactive HELLO and the NS
reply active, the firmware receives two HELLOs from the host on first
boot, which confuses its state machine. Since wcn7850 always
initiates the HELLO itself, the proactive HELLO is redundant.
The retry machinery in qrtr_send_hello() is retained to handle the
case where the HELLO reply fails transiently.
Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
net/qrtr/af_qrtr.c | 25 +++++++++++--------------
net/qrtr/ns.c | 29 +++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 14 deletions(-)
diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c
index 78347c937af7..88cfc116dbdf 100644
--- a/net/qrtr/af_qrtr.c
+++ b/net/qrtr/af_qrtr.c
@@ -598,29 +598,29 @@ static void qrtr_hello_work(struct work_struct *work)
struct qrtr_ctrl_pkt *pkt;
struct qrtr_node *node;
struct qrtr_sock *ctrl;
+ bool reschedule = true;
struct sk_buff *skb;
node = container_of(to_delayed_work(work), struct qrtr_node, say_hello);
- /* NS must be bound before we can send; retry with backoff if not ready */
ctrl = qrtr_port_lookup(QRTR_PORT_CTRL);
- if (!ctrl) {
- schedule_delayed_work(&node->say_hello, msecs_to_jiffies(100));
- return;
- }
+ if (!ctrl)
+ goto out_reschedule;
skb = qrtr_alloc_ctrl_packet(&pkt, GFP_KERNEL);
- if (!skb) {
- qrtr_port_put(ctrl);
- schedule_delayed_work(&node->say_hello, msecs_to_jiffies(100));
- return;
- }
+ if (!skb)
+ goto out_put;
pkt->cmd = cpu_to_le32(QRTR_TYPE_HELLO);
from.sq_node = qrtr_local_nid;
to.sq_node = node->nid;
- qrtr_node_enqueue(node, skb, QRTR_TYPE_HELLO, &from, &to);
+ if (!qrtr_node_enqueue(node, skb, QRTR_TYPE_HELLO, &from, &to))
+ reschedule = false;
+out_put:
qrtr_port_put(ctrl);
+out_reschedule:
+ if (reschedule)
+ schedule_delayed_work(&node->say_hello, msecs_to_jiffies(100));
}
/**
@@ -661,9 +661,6 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int nid)
mutex_unlock(&qrtr_node_lock);
ep->node = node;
- /* Initiate HELLO handshake from the core layer */
- schedule_delayed_work(&node->say_hello, 0);
-
return 0;
}
EXPORT_SYMBOL_GPL(qrtr_endpoint_register);
diff --git a/net/qrtr/ns.c b/net/qrtr/ns.c
index bcb090ee79d4..fe2dfc05e380 100644
--- a/net/qrtr/ns.c
+++ b/net/qrtr/ns.c
@@ -327,8 +327,37 @@ static int server_del(struct qrtr_node *node, unsigned int port, bool bcast)
return 0;
}
+static int say_hello(struct sockaddr_qrtr *dest)
+{
+ struct qrtr_ctrl_pkt pkt;
+ struct msghdr msg = { };
+ struct kvec iv;
+ int ret;
+
+ iv.iov_base = &pkt;
+ iv.iov_len = sizeof(pkt);
+
+ memset(&pkt, 0, sizeof(pkt));
+ pkt.cmd = cpu_to_le32(QRTR_TYPE_HELLO);
+
+ msg.msg_name = (struct sockaddr *)dest;
+ msg.msg_namelen = sizeof(*dest);
+
+ ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt));
+ if (ret < 0)
+ pr_err("failed to send hello msg\n");
+
+ return ret;
+}
+
static int ctrl_cmd_hello(struct sockaddr_qrtr *sq)
{
+ int ret;
+
+ ret = say_hello(sq);
+ if (ret < 0)
+ return ret;
+
return announce_servers(sq);
}
--
2.55.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2
2026-09-13 8:39 ` Takashi Iwai
@ 2026-09-13 9:03 ` Thorsten Leemhuis
2026-09-14 6:22 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Thorsten Leemhuis @ 2026-09-13 9:03 UTC (permalink / raw)
To: Takashi Iwai, Chris Lew
Cc: Deepak Kumar Singh, Pranav Mahesh Phansalkar, netdev,
linux-wireless, linux-kernel, regressions
On 9/13/26 10:39, Takashi Iwai wrote:
> On Sun, 13 Sep 2026 10:35:27 +0200,
> Takashi Iwai wrote:
>>
>> on 7.3-rc2, the suspend/resume of ath12k WiFi on Lenovo Thinkpad T14s
>> Gen6 AMD model is broken. Upon suspend, the network isn't recovered,
>> and the desktop got eventually frozen.
>>
>> The git bisect pointed to the commit
>> 544d85de4dc22c01badfd8cefa59829ce35c4858
>> net: qrtr: Send HELLO message on endpoint register
>>
>> and reverting this fixed the problem.
>>
>> Below is the (stripped) dmesg output after the resume showing the
>> problem.
>>
>> As far as I understand, the problem seems to be the change of the code
>> flow: ath12k uses mhi_power_down_keep_dev() during suspend, so the
>> qcom_mhi_qrtr_remove() and *_probe() won't be called. This makes the
>> driver endlessly waiting for the HELLO handshake upon resume with the
>> commit above.
>
> ... and below is a quick fix I tested. It seems working so far.
Not my area of expertise, as you know, but have you see this fix for the
culprit? Or is your problem a different one?
net: qrtr: resend HELLO on MHI resume
https://lore.kernel.org/all/20260909055846.16539-1-daniel@quora.org/
Ciao, Thorsten
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2
2026-09-13 9:03 ` Thorsten Leemhuis
@ 2026-09-14 6:22 ` Takashi Iwai
0 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2026-09-14 6:22 UTC (permalink / raw)
To: Thorsten Leemhuis
Cc: Takashi Iwai, Chris Lew, Deepak Kumar Singh,
Pranav Mahesh Phansalkar, netdev, linux-wireless, linux-kernel,
regressions
On Sun, 13 Sep 2026 11:03:57 +0200,
Thorsten Leemhuis wrote:
>
> On 9/13/26 10:39, Takashi Iwai wrote:
> > On Sun, 13 Sep 2026 10:35:27 +0200,
> > Takashi Iwai wrote:
> >>
> >> on 7.3-rc2, the suspend/resume of ath12k WiFi on Lenovo Thinkpad T14s
> >> Gen6 AMD model is broken. Upon suspend, the network isn't recovered,
> >> and the desktop got eventually frozen.
> >>
> >> The git bisect pointed to the commit
> >> 544d85de4dc22c01badfd8cefa59829ce35c4858
> >> net: qrtr: Send HELLO message on endpoint register
> >>
> >> and reverting this fixed the problem.
> >>
> >> Below is the (stripped) dmesg output after the resume showing the
> >> problem.
> >>
> >> As far as I understand, the problem seems to be the change of the code
> >> flow: ath12k uses mhi_power_down_keep_dev() during suspend, so the
> >> qcom_mhi_qrtr_remove() and *_probe() won't be called. This makes the
> >> driver endlessly waiting for the HELLO handshake upon resume with the
> >> commit above.
> >
> > ... and below is a quick fix I tested. It seems working so far.
> Not my area of expertise, as you know, but have you see this fix for the
> culprit? Or is your problem a different one?
>
> net: qrtr: resend HELLO on MHI resume
> https://lore.kernel.org/all/20260909055846.16539-1-daniel@quora.org/
Yes, this patch works, too! So scratch mine.
thanks,
Takashi
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-09-14 6:22 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-13 8:35 [REGRESSION] ath12k suspend/resume breakage on 7.3-rc2 Takashi Iwai
2026-09-13 8:39 ` Takashi Iwai
2026-09-13 9:03 ` Thorsten Leemhuis
2026-09-14 6:22 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®