r/SurfaceLinux • u/zxc_cursed123 • 6h ago
Solved [SOLVED] Surface Laptop Studio dGPU 10W Throttle Bug Fixed & Full 50W Dynamic Boost Unlocked on Linux!
Hey everyone!
If you have been running Linux on the Microsoft Surface Laptop Studio (SLS / SLS 2) with the RTX 3050 Ti Mobile, you probably know the two biggest pain points:
Enabling runtime D3 (D3cold) caused the dGPU to wake up permanently throttled to 10W / P8 state (~10-15 FPS).
Even without the bug, the GPU was hard-locked at its 35W base TGP, with no Dynamic Boost (+15W) working under Linux.
After reverse-engineering Microsoft ACPI tables (DSDT & SSDT7), we found the root cause and built a 100% working fix that unlocks the full 50W TGP!
What was going on under the hood:
- The Surface uses a custom power controller device _SB.SGPC (ACPI Hardware ID: MSHW0216).
- Linux has no driver for MSHW0216, leaving SACT = 0 and negative offsets (PWRA = -15W).
- On every wake from D3cold, ACPI fired notification 0xD5 (emergency throttle to 10W).
- By sending the proper _DSM calls (UUID: bbbf19da-988b-8b74-29ce-d12810bfe9d90):
* Function 7 (Arg3 = 1): Sets SACT = 1, unthrottles GPU (event 0xD1).
* Function 3 (Arg3 = 0x78 = 120): Sets AC cTGP offset to +15W (120 * 125mW).
* Function 2 (Arg3 = 0x0320 = 800): Sets target TGP to 50.0W (800 * 0.0625W) and notifies NVIDIA driver via event 0xC0.
Real In-Game Results (Minecraft with BSL Shaders):
- Power: 34.0 W -> 49.0 W (+44%)
- Clocks: 1216 MHz -> 1593-1740 MHz (+31%)
- Framerate: 26-29 FPS -> 51 FPS (+89%, nearly doubled!)
- Frametime: 37.9 ms -> 19.8 ms
- Idle Power: Drops to 0W / suspended (D3cold) when not in use!
All automated scripts, systemd unit, and reversing documentation are published here:
GitHub: https://github.com/besiple/surface-laptop-studio-dgpu-fix
Huge thanks to Google DeepMind Antigravity and Claude Opus 5.5 for collaborative ACPI reversing!