You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[SL6] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate #1864
Description
On my Surface Laptop 6 running Ubuntu with the Linux Surface kernel, the device never fully powers off when issuing shutdown, halt, or hibernate commands.
The screen goes black, but the device remains active, it won’t power on again unless I long-press the power button. When I do, the keyboard briefly flashes, and only then can I power it back on. This indicates the EC finally cutting power at that moment.
This happens consistently, even with different shutdown methods (shutdown, poweroff, halt -p, systemctl hibernate). There is no deep sleep (mem_sleep_default=deep has no effect), as /sys/power/mem_sleep only shows [s2idle].
Steps to Reproduce
Boot into Ubuntu with the Linux Surface kernel.
Run any of the following:
o sudo shutdown now
o sudo poweroff
o sudo halt -p
o sudo systemctl hibernate
Wait for the device to appear off (black screen).
Try to power it on normally. It won't respond.
Long-press the power button until the keyboard flashes.
Press the power button again — now it boots.
Expected Behavior
The system should fully power off (S5/G3).
Pressing the power button afterwards should immediately boot the device.
Hibernate should write memory to disk and then cleanly power off.
Actual Behavior
Device screen goes black, but the system remains in a stuck S0ix-like state.
It won’t power on until a long press triggers an EC reset.
This happens for all power-off methods, including hibernate.
Additional Info
/sys/power/mem_sleep shows only: [s2idle] → no S3 support exposed by firmware.
Using mem_sleep_default=deep has no effect.
dmesg after forced power-off shows s2idle suspend/resume logs, not clean shutdown.
changed the title [-][SL9] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate[/-][+][SL6] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate[/+]on Oct 9, 2025
This issue seems to match the behavior seen on other recent Surface devices (e.g. Surface Laptop 5 and Surface Pro 9), where the system doesn’t fully power off after shutdown because EFI_RESET_SHUTDOWN returns without actually shutting down.
In those cases, the root cause turned out to be PCI shutdown callbacks being invoked on certain Thunderbolt and GPU devices before the firmware call, which causes the EFI shutdown to fail. The fix upstream was to add a DMI-gated PCI quirk that skips the shutdown callbacks for a specific set of devices on those machines. Once that was in place, shutdown started working as expected.
For Surface Laptop 6, the following PCI devices seem to be the relevant ones:
8086:7ec0 — Thunderbolt 4 USB controller
8086:7ec3 — Thunderbolt 4 NHI
8086:7ec6 — Thunderbolt 4 PCIe root port
8086:7d55 — Intel Arc GPU
Extending the existing quirk in drivers/pci/quirks.c with a new DMI match for Surface Laptop 6 and these device IDs would likely address this issue in the same way it was solved for SL5 and Pro 9.
I do have the same problem with the Surface Pro 11 for business (Intel) on EndeavourOS with the 6.16.10.arch1-1 kernel.
If I can help anyhow by somehow identifying the relevant PCI devices I'm ready to assist.
For Surface Laptop 6, the following PCI devices seem to be the relevant ones:
8086:7ec0 — Thunderbolt 4 USB controller
8086:7ec3 — Thunderbolt 4 NHI
8086:7ec6 — Thunderbolt 4 PCIe root port
8086:7d55 — Intel Arc GPU
Extending the existing quirk in drivers/pci/quirks.c with a new DMI match for Surface Laptop 6 and these device IDs would likely address this issue in the same way it was solved for SL5 and Pro 9.
I have tested on Surface Laptop 6 (intel) with a fork of the surface-linux kernel and have had no luck so far for adding a quirk for these device IDs - it still hangs, albeit on the splash screen as the GPU is not shut down. I've added a few other device IDs shown in lspci -nn as some of the device IDs here didn't match those on my laptop.
same problem on Surface GO 3 running Ubuntu 24.04.3 LTS.After running shutdown,the screen turns to black.But one night later,the battery turns to no power. : (
Okay so I have just stumbled on this reddit post for the SL6. After modifying my grub config file to boot with these kernel parameters my SL6 does appear to shutdown correctly. Haven't done much testing but does appear to work in general scenarios.
Okay so I have just stumbled on this reddit post for the SL6. After modifying my grub config file to boot with these kernel parameters my SL6 does appear to shutdown correctly. Haven't done much testing but does appear to work in general scenarios.
I've also applied this on my Surface Pro 11 for business (intel) with Fedora 43 and it seems to have fixed the issue with not powering down and not waking after suspend.
Okay so I have just stumbled on this reddit post for the SL6. After modifying my grub config file to boot with these kernel parameters my SL6 does appear to shutdown correctly. Haven't done much testing but does appear to work in general scenarios.
These kernel parameters got suspend / wake working properly for me on my Surface Pro 9 (intel) with Debian 13 (6.18.7-surface-1). Thanks!
Surface 11 Pro Business (Intel) with Linux Mint surface-kernel: I can confirm, that the solution from the reddit forum works. I copy the solution here, in case the post gets deleted or the link broken:
Activity
[-][SL9] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate[/-][+][SL6] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate[/+]KJELD-LRNT commentedon Oct 10, 2025
Update:
This issue seems to match the behavior seen on other recent Surface devices (e.g. Surface Laptop 5 and Surface Pro 9), where the system doesn’t fully power off after shutdown because EFI_RESET_SHUTDOWN returns without actually shutting down.
In those cases, the root cause turned out to be PCI shutdown callbacks being invoked on certain Thunderbolt and GPU devices before the firmware call, which causes the EFI shutdown to fail. The fix upstream was to add a DMI-gated PCI quirk that skips the shutdown callbacks for a specific set of devices on those machines. Once that was in place, shutdown started working as expected.
For Surface Laptop 6, the following PCI devices seem to be the relevant ones:
8086:7ec0 — Thunderbolt 4 USB controller
8086:7ec3 — Thunderbolt 4 NHI
8086:7ec6 — Thunderbolt 4 PCIe root port
8086:7d55 — Intel Arc GPU
Extending the existing quirk in drivers/pci/quirks.c with a new DMI match for Surface Laptop 6 and these device IDs would likely address this issue in the same way it was solved for SL5 and Pro 9.
Timeo04 commentedon Oct 14, 2025
I do have the same problem with the Surface Pro 11 for business (Intel) on EndeavourOS with the 6.16.10.arch1-1 kernel.
If I can help anyhow by somehow identifying the relevant PCI devices I'm ready to assist.
8bitbuddhist commentedon Oct 19, 2025
Same on a Surface Pro 9 running NixOS with any kernel later than 6.16 (the latest I tested was 6.17.3)
AVSuni commentedon Nov 9, 2025
Same here with Surface Laptop 6 Business and kernel
6.17.1-surface-2infinitelyjames commentedon Nov 9, 2025
I have tested on Surface Laptop 6 (intel) with a fork of the surface-linux kernel and have had no luck so far for adding a quirk for these device IDs - it still hangs, albeit on the splash screen as the GPU is not shut down. I've added a few other device IDs shown in
lspci -nnas some of the device IDs here didn't match those on my laptop.Rob-WildBreath commentedon Jan 13, 2026
same problem on Surface GO 3 running Ubuntu 24.04.3 LTS.After running shutdown,the screen turns to black.But one night later,the battery turns to no power. : (
infinitelyjames commentedon Jan 26, 2026
Okay so I have just stumbled on this reddit post for the SL6. After modifying my grub config file to boot with these kernel parameters my SL6 does appear to shutdown correctly. Haven't done much testing but does appear to work in general scenarios.
KJELD-LRNT commentedon Feb 15, 2026
@infinitelyjames cool! I'm going to check this out!
JesseOgunlaja commentedon Feb 18, 2026
Can confirm that reddit post fixed both my suspend and power off issues thanks for sharing this @infinitelyjames
Timeo04 commentedon Feb 19, 2026
I've also applied this on my Surface Pro 11 for business (intel) with Fedora 43 and it seems to have fixed the issue with not powering down and not waking after suspend.
skyegalaxy commentedon Feb 25, 2026
These kernel parameters got suspend / wake working properly for me on my Surface Pro 9 (intel) with Debian 13 (6.18.7-surface-1). Thanks!
fix(surface): Shutdown-Hang via acpi_osi + pci=hpiosize=0
DerLehrer commentedon Sep 22, 2026
Surface 11 Pro Business (Intel) with Linux Mint surface-kernel: I can confirm, that the solution from the reddit forum works. I copy the solution here, in case the post gets deleted or the link broken:
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="pci=hpiosize=0 acpi=force reboot=acpi acpi_sleep=nonvs acpi_osi="Windows 2020""
sudo update-grub
sudo reboot