Public bug reported:

## Bug Description

MediaTek MT7921E PCIe WiFi (mt7921e driver) fails to resume when the
system uses **s2idle** (S0 idle / Modern Standby), which is the default
suspend mode on affected hardware. After waking from suspend, the WiFi
device is unavailable and cannot reconnect. A secondary symptom is that
restarting the machine after wake causes the system to hang (requiring
force power-off).

## Kernel errors on resume

```
mt7921e 0000:2e:00.0: driver own failed
mt7921e 0000:2e:00.0: PM: dpm_run_callback(): pci_pm_resume returns -5
mt7921e 0000:2e:00.0: PM: failed to resume async: error -5
```

After these errors, the mt7921_mac_reset_work workqueue tries (and
fails) to recover the device.

## Steps to reproduce

1. Use a system with MediaTek MT7921E PCIe WiFi where `s2idle` is the default 
sleep mode
2. Suspend the system (e.g. close lid or `systemctl suspend`)
3. Wake the system
4. Observe: WiFi is unavailable; NetworkManager shows device as unavailable

## Expected behaviour

WiFi reconnects automatically after wake from suspend.

## Workaround

Adding `mem_sleep_default=deep` to kernel cmdline forces S3 sleep, which
allows the PCIe device to properly power-cycle. The driver resumes
correctly with S3.

## System information

- **Hardware:** ASUS laptop with MediaTek MT7921 802.11ax PCIe (Filogic 330) — 
PCI ID: `2e:00.0 Network controller: MEDIATEK Corp. MT7921 802.11ax PCIe 
Wireless Network Adapter [Filogic 330]`
- **OS:** Ubuntu 26.04 LTS (Resolute Raccoon)
- **Kernel:** 7.0.0-15-generic
- **Driver:** mt7921e (part of mt76 stack: mt7921e, mt7921_common, mt792x_lib, 
mt76_connac_lib, mt76)
- **Default sleep mode:** s2idle (S0 idle)
- **Sleep modes available:** freeze mem (s2idle, deep)

## Additional context

The s2idle mode keeps the PCIe bus partially powered, but the MT7921E
firmware does not properly handle the ownership handoff on resume. With
S3 (deep), the device fully power-cycles and the driver re-initialises
from scratch, which works correctly.

This is a known class of issue with MT7921/MT7922 and s2idle on various
Linux platforms. A kernel-level fix in the mt7921e resume path (similar
to what was done for similar chips) would resolve this without requiring
users to change their sleep mode.

---
### Collected system info
```
=== System ===
Linux hamed-3500 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 
16:06:43 UTC 2026 x86_64 GNU/Linux
PRETTY_NAME="Ubuntu 26.04 LTS"
NAME="Ubuntu"
VERSION_ID="26.04"
VERSION="26.04 LTS (Resolute Raccoon)"
VERSION_CODENAME=resolute
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/";
SUPPORT_URL="https://help.ubuntu.com/";
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
UBUNTU_CODENAME=resolute
LOGO=ubuntu-logo

=== Hardware ===
2e:00.0 Network controller: MEDIATEK Corp. MT7921 802.11ax PCIe Wireless 
Network Adapter [Filogic 330]

=== Driver modules ===
mt7921e                24576  0
mt7921_common          94208  1 mt7921e
mt792x_lib             73728  2 mt7921e,mt7921_common
mt76_connac_lib       110592  3 mt792x_lib,mt7921e,mt7921_common
mt76                  167936  4 mt792x_lib,mt7921e,mt7921_common,mt76_connac_lib
mac80211             1933312  4 mt792x_lib,mt76,mt7921_common,mt76_connac_lib
cfg80211             1536000  4 mt76,mac80211,mt7921_common,mt76_connac_lib
filename:       
/lib/modules/7.0.0-15-generic/kernel/drivers/net/wireless/mediatek/mt76/mt7921/mt7921e.ko.zst
description:    MediaTek MT7921E (PCIe) wireless driver
firmware:       mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin
firmware:       mediatek/WIFI_RAM_CODE_MT7922_1.bin
firmware:       mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin
firmware:       mediatek/WIFI_RAM_CODE_MT7961_1.bin
firmware:       mediatek/WIFI_MT7961_patch_mcu_1a_2_hdr.bin
firmware:       mediatek/WIFI_RAM_CODE_MT7961_1a.bin
srcversion:     1F1C9D5DFD126F4ED31DA57
vermagic:       7.0.0-15-generic SMP preempt mod_unload modversions 

=== Sleep state ===
s2idle [deep]
freeze mem disk
BOOT_IMAGE=/boot/vmlinuz-7.0.0-15-generic 
root=UUID=892a3bd9-5b62-4d89-b817-346203b578be ro quiet splash 
mem_sleep_default=deep 
crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M

=== Suspend/resume kernel logs showing the bug ===
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x00000000-0x00000fff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x0009f000-0x000fffff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x5e3c6000-0x5e3f4fff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x5f85f000-0x5f85ffff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x613a5000-0x667fefff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x66800000-0xffffffff]
May 27 20:12:03 hamed-3500 kernel: ACPI: PM: Registering ACPI NVS region [mem 
0x65dab000-0x65ea4fff] (1024000 bytes)
May 27 20:12:03 hamed-3500 kernel: PM: RTC time: 18:12:02, date: 2026-05-27
May 27 20:12:03 hamed-3500 kernel: ACPI: PM: (supports S0 S3 S4 S5)
May 27 20:12:03 hamed-3500 kernel: clocksource: acpi_pm: mask: 0xffffff 
max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
May 27 20:12:03 hamed-3500 kernel: PM:   Magic number: 10:102:242
May 27 20:12:03 hamed-3500 kernel: PM: genpd: Disabling unused power domains
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: enabling device (0000 
-> 0002)
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: ASIC revision: 79610010
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: HW/SW Version: 
0x8a108a10, Build Time: 20260224110909a
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: WM Firmware Version: 
____010000, Build Time: 20260224110949
May 27 20:12:08 hamed-3500 kernel: mt7921e 0000:2e:00.0 wlo1: renamed from wlan0
May 27 20:12:09 hamed-3500 NetworkManager[1696]: <info>  [1779905529.2094] 
rfkill3: found Wi-Fi radio killswitch (at 
/sys/devices/pci0000:00/0000:00:1c.3/0000:2e:00.0/ieee80211/phy0/rfkill3) 
(driver mt7921e)
May 27 20:40:31 hamed-3500 sudo[9998]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/tee /etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:31 hamed-3500 sudo[10003]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/chmod +x /etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:40 hamed-3500 sudo[10012]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/cp /tmp/mt7921-wifi-fix.sh 
/etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:40 hamed-3500 sudo[10017]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/chmod +x /etc/systemd/system-sleep/mt7921-wifi-fix.sh

=== Full dmesg around suspend/resume ===
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x00000000-0x00000fff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x0009f000-0x000fffff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x5e3c6000-0x5e3f4fff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x5f85f000-0x5f85ffff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x613a5000-0x667fefff]
May 27 20:12:03 hamed-3500 kernel: PM: hibernation: Registered nosave memory: 
[mem 0x66800000-0xffffffff]
May 27 20:12:03 hamed-3500 kernel: ACPI: PM: Registering ACPI NVS region [mem 
0x65dab000-0x65ea4fff] (1024000 bytes)
May 27 20:12:03 hamed-3500 kernel: PM: RTC time: 18:12:02, date: 2026-05-27
May 27 20:12:03 hamed-3500 kernel: ACPI: PM: (supports S0 S3 S4 S5)
May 27 20:12:03 hamed-3500 kernel: Low-power S0 idle used by default for system 
suspend
May 27 20:12:03 hamed-3500 kernel: clocksource: acpi_pm: mask: 0xffffff 
max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
May 27 20:12:03 hamed-3500 kernel: PM:   Magic number: 10:102:242
May 27 20:12:03 hamed-3500 kernel: PM: genpd: Disabling unused power domains
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: enabling device (0000 
-> 0002)
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: ASIC revision: 79610010
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: HW/SW Version: 
0x8a108a10, Build Time: 20260224110909a
May 27 20:12:07 hamed-3500 kernel: mt7921e 0000:2e:00.0: WM Firmware Version: 
____010000, Build Time: 20260224110949
May 27 20:12:08 hamed-3500 kernel: mt7921e 0000:2e:00.0 wlo1: renamed from wlan0
May 27 20:12:09 hamed-3500 NetworkManager[1696]: <info>  [1779905529.2094] 
rfkill3: found Wi-Fi radio killswitch (at 
/sys/devices/pci0000:00/0000:00:1c.3/0000:2e:00.0/ieee80211/phy0/rfkill3) 
(driver mt7921e)
May 27 20:12:10 hamed-3500 rtkit-daemon[2231]: Handling system-suspend using 
logind.
May 27 20:40:19 hamed-3500 sudo[9659]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/sed -i s/GRUB_CMDLINE_LINUX_DEFAULT=\"quiet 
splash\"/GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash mem_sleep_default=deep\"/ 
/etc/default/grub
May 27 20:40:31 hamed-3500 sudo[9993]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/mkdir -p /etc/systemd/system-sleep
May 27 20:40:31 hamed-3500 sudo[9998]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/tee /etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:31 hamed-3500 sudo[10003]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/chmod +x /etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:40 hamed-3500 sudo[10012]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/cp /tmp/mt7921-wifi-fix.sh 
/etc/systemd/system-sleep/mt7921-wifi-fix.sh
May 27 20:40:40 hamed-3500 sudo[10017]: hamed :  PWD=/home/hamed ; USER=root ; 
COMMAND=/usr/bin/chmod +x /etc/systemd/system-sleep/mt7921-wifi-fix.sh

```

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: mt76 mt7921 regression resume s2idle suspend wifi

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

Title:
  MT7921E WiFi fails to resume from s2idle suspend: 'driver own failed',
  no network after wake

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


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

Reply via email to