Skip to content

[SL6] Surface Laptop 6 does not fully power off — hangs in S0ix after shutdown or hibernate #1864

Open

Description

@KJELD-LRNT

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

  1. Boot into Ubuntu with the Linux Surface kernel.
  2. Run any of the following:
    o sudo shutdown now
    o sudo poweroff
    o sudo halt -p
    o sudo systemctl hibernate
  3. Wait for the device to appear off (black screen).
  4. Try to power it on normally. It won't respond.
  5. Long-press the power button until the keyboard flashes.
  6. 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.
  • Tested on both battery and AC.
  • powertop tuning does not change behavior.

Activity

  1. 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
  2. KJELD-LRNT commented on Oct 10, 2025

    @KJELD-LRNT
    Author

    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.

  3. Timeo04 commented on Oct 14, 2025

    @Timeo04

    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.

  4. 8bitbuddhist commented on Oct 19, 2025

    @8bitbuddhist

    Same on a Surface Pro 9 running NixOS with any kernel later than 6.16 (the latest I tested was 6.17.3)

  5. AVSuni commented on Nov 9, 2025

    @AVSuni

    Same here with Surface Laptop 6 Business and kernel 6.17.1-surface-2

  6. infinitelyjames commented on Nov 9, 2025

    @infinitelyjames

    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.

  7. Rob-WildBreath commented on Jan 13, 2026

    @Rob-WildBreath

    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. : (

  8. infinitelyjames commented on Jan 26, 2026

    @infinitelyjames

    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.

  9. KJELD-LRNT commented on Feb 15, 2026

    @KJELD-LRNT
    Author

    @infinitelyjames cool! I'm going to check this out!

  10. JesseOgunlaja commented on Feb 18, 2026

    @JesseOgunlaja

    Can confirm that reddit post fixed both my suspend and power off issues thanks for sharing this @infinitelyjames

  11. Timeo04 commented on Feb 19, 2026

    @Timeo04

    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.

  12. skyegalaxy commented on Feb 25, 2026

    @skyegalaxy

    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!

  13. DerLehrer commented on Sep 22, 2026

    @DerLehrer

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions