Launchpad has imported 15 comments from the remote bug at
https://bugzilla.kernel.org/show_bug.cgi?id=222121.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://documentation.ubuntu.com/launchpad/user/reference/bugs/multi-project-bugs/about-multi-project-bugs/#bugs-in-external-trackers.

------------------------------------------------------------------------
On 2026-10-12T13:30:42+00:00 aliozkaya00 wrote:

Created attachment 311088
dmesg, v7.2.6, WoWLAN on, magic-packet wake: failed resume

With WoWLAN enabled (iw phy0 wowlan enable magic-packet), the WCN7850 is
inaccessible after resume from S3 and the system freezes about 50 ms after
"PM: suspend exit" (keyboard/mouse dead, clock stopped; needs a hard reset).
With WoWLAN disabled, S3 suspend/resume works reliably.

Kernel: mainline v7.2.6, the unmodified build from kernel.ubuntu.com/mainline
(7.2.6-070206-generic). Also reproduced on mainline v7.0.14 and on Ubuntu's
7.0.0-38-generic. No out-of-tree modules loaded; /proc/sys/kernel/tainted
was 0 before suspending.

v7.2.6 is the newest vanilla build packaged at
kernel.ubuntu.com/mainline. As far as I can tell there are no ath12k
changes on linux-7.2.y after v7.2.6, and no suspend/WoW-related ath12k
changes in mainline since; happy to build and test 7.2.10 or 7.3-rc if
useful.

Distribution: Ubuntu 26.04.1 LTS
Host: desktop, ASUS ProArt X870E-CREATOR WIFI, AMD Ryzen 9 9950X3D
BIOS: 2202 (04/09/2026)
Wi-Fi: onboard WCN785x [17cb:1107], subsystem [105b:e10a], behind the
chained chipset bridges 00:02.1 -> 03:00.0 -> 04:08.0 -> 06:00.0 -> 07:04.0 -> 
09:00.0
Firmware: WLAN.HMT.1.1.c7-00108-QCAHMTSWPL_V1.0_V2.0_SILICONZ_UPSTREAM-3

Steps to reproduce:
1. iw phy0 wowlan enable magic-packet
2. systemctl suspend   (mem_sleep = deep)
3. Wake with a magic packet, or with the power button

Results (WoWLAN enabled):
- v7.2.6: magic-packet wake 1/1 failed; power-button wake 1/2 failed
  (the other resumed cleanly)
- v7.0.14: power-button wake 1/1 failed
- Ubuntu 7.0.0-38: 7/7 failed (including both magic-packet and power-button
  wakes, with mem_sleep deep and s2idle)
WoWLAN disabled: resumes normally on all three kernels.

Workarounds tried on v7.2.6 (WoWLAN on, magic-packet wake), none helped:
- d3cold_allowed=0 on 0000:09:00.0 and its upstream port 0000:07:04.0:
  same failure (device inaccessible, SYS ERROR, freeze)
- ASPM L1 disabled on 0000:09:00.0 (link/l1_aspm=0): same failure
- pcie_port_pm=off: worse, 2/2 hung earlier with no display output and
  nothing logged after "PM: suspend entry (deep)"

Failing resume (v7.2.6):

ACPI: PM: Waking up from system sleep state S3
ath12k_wifi7_pci 0000:09:00.0: Unable to change power state from D3hot to D0, 
device inaccessible
qcom_mhi_qrtr mhi0_IPCR: failed to prepare for autoqueue transfer -22
qcom_mhi_qrtr mhi0_IPCR: PM: failed to resume early: error -22
mhi mhi0: Resuming from non M3 state (SYS ERROR)
ath12k_wifi7_pci 0000:09:00.0: failed to set mhi state: RESUME(7)
ath12k_wifi7_pci 0000:09:00.0: timed out while waiting for wow wakeup completion
ath12k_wifi7_pci 0000:09:00.0: failed to wakeup from wow: -110
ath12k_wifi7_pci 0000:09:00.0: wmi command 16387 timeout
(followed by mac80211 WARNINGs in ieee80211_reconfig, _sta_info_move_state,
__sta_info_destroy_part2, ieee80211_del_chanctx, drv_stop)
ieee80211 phy0: PM: failed to resume async: error -11

Full kernel logs of each cycle are attached (MAC addresses masked), including
the one v7.2.6 power-button resume that succeeded, for comparison.

Other configuration: a system-sleep hook disables PCI wakeup on the USB 
controllers and on root ports 00:02.1 and 00:02.2 before suspend (works around
spurious USB PME wakeups on this board); the card has its own ACPI wake device
and magic-packet wake does power the system on.

Downstream report:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503

uname -a:
Linux host 7.2.6-070206-generic #202609141300 SMP PREEMPT_DYNAMIC Mon Sep 14 
15:22:52 UTC 2026 x86_64 GNU/Linux

lspci -mnn:
09:00.0 "Network controller [0280]" "Qualcomm Technologies, Inc [17cb]" 
"WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800] [1107]" -r01 -p00 
"Foxconn International, Inc. [105b]" "Device [e10a]"

find /lib/firmware/ath12k/ -type f | xargs md5sum (WCN7850):
1cacb8347a9275aa29f7cd92f1fea54c  
/lib/firmware/ath12k/WCN7850/hw2.0/amss.bin.zst
953ba9719c55664a5d91d99b412caee1  
/lib/firmware/ath12k/WCN7850/hw2.0/Notice.txt.zst
8ee2ebb8bc7c70b27d9933794e450b1b  
/lib/firmware/ath12k/WCN7850/hw2.0/board-2.bin.zst
2ecd46cdee0ae8de657d900dd9824ad6  /lib/firmware/ath12k/WCN7850/hw2.0/m3.bin.zst
e8cb09096a24b2f286657ed26c9810f1  
/lib/firmware/ath12k/WCN7850/hw2.0/ncm865/amss.bin.zst

dmesg | grep ath12k (v7.2.6 boot):
ath12k_wifi7_pci 0000:09:00.0: BAR 0 [mem 0xf2600000-0xf27fffff 64bit]: assigned
ath12k_wifi7_pci 0000:09:00.0: enabling device (0000 -> 0002)
ath12k_wifi7_pci 0000:09:00.0: Wi-Fi 7 Hardware name: wcn7850 hw2.0
ath12k_wifi7_pci 0000:09:00.0: MSI vectors: 16
ath12k_wifi7_pci 0000:09:00.0: chip_id 0x2 chip_family 0x4 board_id 0xff soc_id 
0x40170200
ath12k_wifi7_pci 0000:09: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

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/6

------------------------------------------------------------------------
On 2026-10-12T13:33:37+00:00 aliozkaya00 wrote:

Created attachment 311089
dmesg, v7.2.6, WoWLAN on, power-button wake: failed resume

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/7

------------------------------------------------------------------------
On 2026-10-12T13:34:11+00:00 aliozkaya00 wrote:

Created attachment 311090
dmesg, v7.2.6, WoWLAN on, power-button wake: successful resume (for comparison)

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/8

------------------------------------------------------------------------
On 2026-10-12T13:34:48+00:00 aliozkaya00 wrote:

Created attachment 311091
dmesg, v7.0.14, WoWLAN on, power-button wake: failed resume

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/9

------------------------------------------------------------------------
On 2026-10-12T14:30:06+00:00 jeff.johnson wrote:

Sounds like the issue that was fixed with
6a5719cc3ef2 ("net: qrtr: resend HELLO on MHI resume")

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/11

------------------------------------------------------------------------
On 2026-10-12T14:33:32+00:00 jeff.johnson wrote:

Although this sounds like the issue fixed by the commit I mentioned,
that was only in the v7.3 release candidate, so is probably not the
right fix.

Assigned to Baochen for further investigation

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/12

------------------------------------------------------------------------
On 2026-10-13T10:25:47+00:00 aliozkaya00 wrote:

Created attachment 311098
dmesg: WoWLAN S3 resume hang on ath-next (7.3-rc5)

Still reproduces on ath/ath-next at 5949d1910f13 (v7.3-rc5 based, so it
includes 6a5719cc3ef2). Kernel built from that tree with Ubuntu's
config, no out-of-tree modules, not tainted before the first WARN.

WoWLAN armed (magic-packet), S3, woken with the power button. Same
sequence as before: "Unable to change power state from D3hot to D0,
device inaccessible", qcom_mhi_qrtr_pm_resume_early returns -22, "mhi
mhi0: Resuming from non M3 state (SYS ERROR)", WMI timeouts, mac80211
WARNs, "ieee80211 phy0: PM: failed to resume async: error -11", then the
system hangs right after "PM: suspend exit". Log attached (resume-
wowlan-athtest-7.3-rc5.log).

I have an ath-next build set up on the affected machine, so I can test
patches or extra debug options (debug_mask, MHI dynamic debug, etc.)
quickly. Just let me know what you need.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/13

------------------------------------------------------------------------
On 2026-10-14T03:07:51+00:00 bqiang wrote:

Comparing the failing run (att. 311089) and the successful run (att.
311090):

Failing resume (311089):
ath12k_wifi7_pci 0000:09:00.0: Unable to change power state from D3hot to D0, 
device inaccessible

that error comes from the PCI core when it tries to bring 0000:09:00.0
from D3hot back to D0 and reads the device's PCI config space back as
all-ones (0xffffffff). Config space reading as 0xffffffff means the PCIe
link to the card is not up — the upstream switch chain (00:02.1 ->
03:00.0 -> 04:08.0 -> 06:00.0 -> 07:04.0 -> 09:00.0) has not retrained
the downstream link back to L0. This happens before any ath12k resume
callback runs.

To confirm the link theory, could you capture the PCIe link state right
after resume, for both a failing and a successful wake? For example:

  setpci -s 09:00.0 CAP_EXP+0x12.w     # Link Status (device)
  setpci -s 07:04.0 CAP_EXP+0x12.w     # Link Status (immediate upstream port)
  setpci -s 06:00.0 CAP_EXP+0x12.w
  setpci -s 04:08.0 CAP_EXP+0x12.w
  setpci -s 03:00.0 CAP_EXP+0x12.w
  setpci -s 00:02.1 CAP_EXP+0x12.w

On the failing case the device/port should show the link not trained
(and a config read of 09:00.0 returning 0xffffffff). It would also help
to test pcie_aspm=off (globally, not just per-port L1) and whether that
changes the failure rate.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/14

------------------------------------------------------------------------
On 2026-10-14T12:18:23+00:00 aliozkaya00 wrote:

Created attachment 311111
PCIe link state before/after resume, default vs pcie_aspm=off (7 runs)

Results on ath-next 5949d1910f13 (v7.3-rc5), untainted, power-button
wake. I read LnkCtl/LnkSta (CAP_EXP+0x10/0x12) and the ID dword of every
port in the chain from a systemd system-sleep hook, before suspend and
right after resume (~11 ms after "Waking up from system sleep state S3",
before the hang). 00:02.1, 03:00.0, 04:08.0 and 06:00.0 are identical
before and after in every run. Only the last link changes.

Default ASPM:
- WoWLAN off: resumes. 07:04.0 LnkSta 0x3013 before and after, 09:00.0 readable.
- WoWLAN armed: 3/3 hang. 07:04.0 LnkSta 0x3013 -> 0x1011 (DLL Link Active 
clear, Link Training clear, speed back to 2.5 GT/s). 09:00.0 reads 0xffffffff.

pcie_aspm=off ("PCIe ASPM is disabled"):
- WoWLAN armed: 3/3 resume cleanly (37-44 s sleeps). 07:04.0 stays at 0x3013, 
09:00.0 at 0x1013, and Wi-Fi reconnects.

Note that pcie_aspm=off doesn't turn L1 off on this board. The BIOS
leaves ASPM L1 enabled, so LnkCtl bits 1:0 = 2 in both cases. What
differs is Common Clock Configuration (bit 6): the kernel sets it in the
default case (downstream ports 0x0c42, upstream ports/endpoint 0x0042),
and it stays clear with pcie_aspm=off (0x0c02 / 0x0002), on every link
in the chain. I didn't capture L1 PM Substates control. I can add that,
or anything else, to the hook. (Turning L1 off via sysfs l1_aspm=0 on
7.2.6 earlier didn't help either.)

All 7 runs are in the attached file. The hook's lines start with
"pcielink:".

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/15

------------------------------------------------------------------------
On 2026-10-14T12:24:36+00:00 aliozkaya00 wrote:

Created attachment 311112
dmesg: pcie_aspm=off, WoWLAN armed, magic-packet wake -> hang

One more run with pcie_aspm=off, WoWLAN armed, but woken by an actual
magic packet instead of the power button: it hangs, with the same
signature as the default case. 07:04.0 LnkSta 0x3013 -> 0x1011, 09:00.0
reads 0xffffffff, MHI SYS ERROR, "failed to wakeup from wow: -110".
Magic-packet wake also failed on 7.2.6 earlier. So pcie_aspm=off only
helps when something other than the card wakes the system. Log attached.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/16

------------------------------------------------------------------------
On 2026-10-15T03:05:40+00:00 bqiang wrote:

I tested the same WCN7850 (same firmware, WLAN.HMT.1.1.c7-00108) on a
different machine where the card sits directly behind a single Intel
root port. WoWLAN armed with magic-packet, woken by a real magic packet:

  ...
  mhi mhi0: Entered with PM state: M3, MHI state: M3
  ath12k_wifi7_pci 0000:02:00.0: wow wakeup host reason 10 
WOW_REASON_RECV_MAGIC_PATTERN
  ...

Resume is clean, no "non M3 state (SYS ERROR)", no "device
inaccessible", Wi-Fi reconnects. So the firmware's WoW / magic-packet
path is working. The difference from your setup: mine was s2idle, your
failure is in S3 (deep).

From your latest logs, last link in the chain (07:04.0 ↔ 09:00.0) comes
back with DLL Link Active cleared (0x3013 → 0x1011) and config reads
return 0xffffffff. That inaccessible-device state is what then cascades
into the MHI SYS ERROR and the WoW failure — all downstream of the link
not being up.

To pin down whether it's the PCIe link not retraining (platform) vs. the
device not coming back from D3cold/D3hot (firmware), could you try
forcing a retrain on the failing resume? Right after resume, on the
downstream port:

  # set Retrain Link (LnkCtl bit5) on 07:04.0, then re-read LnkSta
  setpci -s 07:04.0 CAP_EXP+0x10.w=$(printf %04x $((0x$(setpci -s 07:04.0 
CAP_EXP+0x10.w) | 0x20)))
  setpci -s 07:04.0 CAP_EXP+0x12.w  # check if DLL Link Active (bit13) goes 0->1
  setpci -s 09:00.0 00.l            # check if it stops reading ffffffff

  - If retrain brings the link back (DLL active, 09:00.0 readable) → the link 
just wasn't retrained on resume (platform/PCI side).
  - If it still reads 0xffffffff → the device didn't come back (firmware side).

  That result may tell us which side to fix.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/17

------------------------------------------------------------------------
On 2026-10-15T13:31:04+00:00 aliozkaya00 wrote:

Created attachment 311121
pstore oops after failed resume: ath12k_pci_remove -> mhi_gen_tre page fault 
(ath-next, retrain run)

Retrain result (ath-next 5949d1910f13, S3, WoWLAN armed, power-button
wake): no effect. Right after resume the hook set Retrain Link on
07:04.0 (setpci CAP_EXP+0x10.w=0020:0020) and re-read for 123 ms:

  pcielink: post 07:04.0 id=43f51022 lnkctl=0c42 lnksta=1011
  pcielink: post 09:00.0 id=ffffffff lnkctl=none lnksta=none
  pcielink: retrain +3ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +8ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +15ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +24ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +37ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +69ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff
  pcielink: retrain +123ms 07:04.0 lnksta=1011 09:00.0 id=ffffffff

Link Training never sets and DLL Link Active stays clear. So it doesn't
look like a link that merely wasn't retrained. The downstream port
doesn't seem to see the device at all.

I also found what actually hangs the machine. Every failed resume since
I started testing left an EFI pstore oops (Ubuntu 7.0.0-38, mainline
7.0.14 and 7.2.6, ath-next), all with the same trace. After resume, an
ACPI hotplug notify makes acpiphp remove the unreachable 09:00.0, and
ath12k's remove path faults in MHI:

  BUG: unable to handle page fault for address: ffffcbff4be09034
  Workqueue: kacpi_hotplug acpi_hotplug_work_fn
  RIP: 0010:mhi_gen_tre+0x3f/0x220 [mhi]
   mhi_queue+0x78/0x170 [mhi]
   mhi_queue_skb+0x55/0x80 [mhi]
   qcom_mhi_qrtr_send+0x68/0x140 [qrtr_mhi]
   qrtr_node_enqueue+0xfb/0x570 [qrtr]
   qrtr_sendmsg+0x178/0x300 [qrtr]
   kernel_sendmsg+0x2b/0x40
   qmi_send_message.isra.0+0xe7/0x140 [qmi_helpers]
   qmi_send_request+0x1f/0x40 [qmi_helpers]
   ath12k_qmi_wlanfw_mode_send+0xa0/0x1b0 [ath12k]
   ath12k_qmi_firmware_stop+0x1f/0x60 [ath12k]
   ath12k_core_stop+0xa3/0xb0 [ath12k]
   ath12k_core_hw_group_cleanup+0x70/0xd0 [ath12k]
   ath12k_pci_remove+0x66/0x2c0 [ath12k]
   pci_device_remove+0x4b/0xb0
   ...
   pci_stop_and_remove_bus_device+0x16/0x30
   trim_stale_devices+0x145/0x180 (nested 5x, one per bridge)
   acpiphp_check_bridge.part.0+0x136/0x180
   acpiphp_hotplug_notify+0x18e/0x2e0
   acpi_device_hotplug+0xa1/0x4b0

So once the card is gone and MHI is in SYS ERROR, ath12k_pci_remove
still sends WLAN_MODE_OFF over QMI/MHI and touches ring memory that is
no longer mapped. Without that oops this would presumably end with Wi-Fi
gone, not a frozen machine. The full dump from the ath-next run is
attached, including the pcielink/retrain lines.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/18

------------------------------------------------------------------------
On 2026-10-15T13:52:27+00:00 aliozkaya00 wrote:

Created attachment 311123
S3 without no-usb-pme-wake hook (same oops) + 2x s2idle (survives, no 
magic-packet wake)

Two more results on ath-next:

1. Retrain again, this time with my no-usb-pme-wake system-sleep hook
disabled from a fresh boot. That hook clears PCI wakeup on the USB
controllers and the root ports above them, including 00:02.1, to stop
spurious USB PME wakes from S3, and every earlier run had it active.
Same result: 07:04.0 LnkSta stays 0x1011 for 126 ms after Retrain Link,
09:00.0 reads 0xffffffff, and the same acpiphp -> ath12k_pci_remove ->
mhi_gen_tre oops follows. So the hook isn't a factor.

2. s2idle, WoWLAN armed, 2 runs (the second with the hook off and
00:02.1 wakeup enabled): resume is clean both times. The link stays up
(07:04.0 0x3013, 09:00.0 0x1013) and Wi-Fi reconnects. But a magic
packet does not wake the system from s2idle, so both runs had to be
woken with the power button. NetworkManager keeps the association up
through suspend. In S3 the same magic packet does wake the system (the
card's ACPI wake device NV00 is enabled).

All three runs are in the attached file.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/19

------------------------------------------------------------------------
On 2026-10-16T01:54:28+00:00 bqiang wrote:

Have you ever tried other WoWLAN triggers, like disconnect, in either
s2idle mode or deep mode ?

1. connect wifi to an AP
2. iw phy0 wowlan enable disconnect
3. put system to suspend
4. power off AP
5. system is expected to wakeup

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/20

------------------------------------------------------------------------
On 2026-10-24T21:22:49+00:00 aliozkaya00 wrote:

Created attachment 311277
WoWLAN disconnect trigger: s2idle (no wake, FW reports AP_ASSOC_LOST) + S3 
(wakes, same hang/oops)

Tested the disconnect trigger in both modes, following your steps.
Kernel: ath-next 5949d1910f13 rebuilt with CONFIG_ATH12K_DEBUG,
debug_mask=0x8002, pm_debug_messages=1. Both runs are in the attached
file.

s2idle (no-usb-pme-wake hook disabled, 00:02.1 and 09:00.0 power/wakeup
enabled): the system did not wake. After ~95 s I woke it with the power
button. The firmware did notice the AP going away: queued "wmi roam
event vdev 0 reason 2" (beacon miss) events and "wow wakeup host reason
1 WOW_REASON_AP_ASSOC_LOST" arrive right after resume. But the only
wakeup IRQs logged are IRQ 9 ("ACPI: PM: ACPI fixed event wakeup", the
power button) and IRQ 31. IRQ 31 is the PME interrupt of 00:02.2, the
spurious USB PME port, not 00:02.1 above the WLAN card. Resume was clean
and Wi-Fi reconnected. So in s2idle the firmware detects the event, but
its wakeup never reaches the host, same as the magic-packet runs in
comment 12.

deep (hook active, as in all earlier S3 runs): the system woke by itself
shortly after the AP was powered off, so disconnect wake works in S3.
Then the same failure as before: 07:04.0 LnkSta 0x1011, 09:00.0 reads
0xffffffff, Retrain Link has no effect, mac80211 WARNs, "wiphy_resume
returns -11", then the acpiphp -> ath12k_pci_remove -> mhi_gen_tre page
fault. This time the journal lost all kernel lines after "PM: suspend
entry", so the S3 part of the attachment is the EFI pstore dump. Its
beginning is truncated.

So the trigger type makes no difference. In S3 the card wakes the system
but is gone from the bus after resume. In s2idle the card survives
resume, but its wakeup never reaches the host.

Reply at:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2170503/comments/21


** Changed in: linux
       Status: Unknown => In Progress

** Changed in: linux
   Importance: Unknown => Medium

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2170503

Title:
  ath12k WCN7850: system hangs on resume from suspend when WoWLAN magic-
  packet is enabled

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/2170503/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to