Repository navigation
Surface Pro 7 has CPU throttled to 1500 MHz after resume from suspend #706
Description
Activity
This also seems to happen if the device sleeps due to low battery.
When it comes back up, the CPU is throttled.
It's definitely related to low battery. It seems to happen when the device is < 5% on battery. The processor is throttled to 1500, and then when the battery charges up the machine is still stuck in the throttled mode.
To replicate, allow the Surface to auto-sleep/hibernate due to low battery, and then plug in and boot up.
Letting the battery charge, and then hibernate / resume will correct the issue.
Suspend doesn't seem to trigger the "fix".
One other thing worth nothing that I just discovered is that this issue does not occur with the standard linux kernel (specifically, I'm running PopOS). This appears to be exclusive to the linux-surface kernel.
1500 Mhz? When I'm low battery after sleep, my CPU is throttled to 500 Mhz. I'd wish for 1500 Mhz, lol. Sometimes it unstucks itself and goes back to normal after battery charges a bit, sometimes it can remain stuck at 500 Mhz even with 100% battery and I have to restart. Can't remember if I tried putting it to sleep to see if it fixes it. Neither did I try Log Off. But a restart definitely fixes it past ... 20% battery I believe.
SP7 i5 on Fedora 35 with Surface Kernel 5.16. (5.16.17-1.surface.fc35.x86_64)
Reacted by karlI have the same behaviour on my Surface Laptop Go 3, stuck at 400MHz...
Run the following commands to fix the throttling:
sudo apt install msr-tools sudo modprobe msr sudo wrmsr --all 0x601 0x408
To reduce the risk of electrical fire, do not set this
MSR_VR_CURRENT_CONFIGhigher than observed for your device. This is the good value for my Surface Pro 7 i7.I obtained it by diffing it with the
rdmsrgiving a bad value of0x78when things were throttled. This variable seems to make all the difference. Setting it to a bad value on a good boot causes bad throttling, and setting it back to the good value fixes things without restarting.Reacted by Willow M.Run the following commands to fix the throttling:
sudo apt install msr-tools sudo modprobe msr sudo wrmsr --all 0x601 0x408
To reduce the risk of electrical fire, do not set this
MSR_VR_CURRENT_CONFIGhigher than observed for your device. This is the good value for my Surface Pro 7 i7.I obtained it by diffing it with the
rdmsrgiving a bad value of0x78when things were throttled. This variable seems to make all the difference. Setting it to a bad value on a good boot causes bad throttling, and setting it back to the good value fixes things without restarting.after using this fix, my computer froze, which is not something that has happened before and i do not see another possible reason for why it could have. could changing that setting have caused this?
edit: i have an sp7 i7 and rdmsr yeilded FFF, so i just went with your values being not totally sure what i was doing.
@Flameopathic A freeze shouldn't happen and I never saw one. Also, don't worry, this is a per-boot temporary register, not a permanent setting.
Your computer certainly wasn't overheating, and letting it return to normal values shouldn't cause anything different from CPU operation in a normal boot. Specifically my i7 is 512GB. This MSR is a maximum not a target, according to the Intel docs:
Register Address: 601H, 1537 MSR_VR_CURRENT_CONFIG
Power Limit 4 (PL4) Package
Package-level maximum power limit (in Watts). It is a proactive, instantaneous limit.
12:0 PL4 Value
PL4 value in 0.125 A increments. This field is locked by VR_CURRENT_CONFIG[LOCK]. When the LOCK bit is set to 1b, this
field becomes Read Only.I don't know what set yours to FFF, which looks corrupt and too high. We want to take the value from a normal boot to restore on problematic boots. Despite worrying, I set FFF for a minute and nothing froze, but I prefer the proper value. You can also search the Intel manual for
LIMIT, or just looprdmsrfor all registers across good and bad boots todiff.If the GUI freezes, try TTY to know if there's a panic. Today I'm on
6.10.5-surface-1. If it still freezes, then try disabling secure boot (which might've caused wrmsr to freeze) and updating Surface firmware using Windows.@danielzgtg thank you for the help and resources! everything seems to be playing a little nicer, the freeze must have been unrelated.
Reacted by Daniel Tang@danielzgtg Can I ask you for some guidance?
I have this same problem with my Surface Pro 7 i5 256gb. However, the battery doesn't work any longer, so I cannot get the values from a good boot, as it's never happening. Do you know where I could find possibles register values to test?@KakeyaK You can just use my
0x408value. Nothing bad happened to the user who used the extreme0xFFFvalue. Surfaces have other overheating protection mechanisms, and the risk so far appears to be no more than that that overclockers face.@danielzgtg Thank you! It worked great!
For future reference, I also found this issue #1041 that mentions the same error. Their answer involved doing some calculation regarding the cpu wattage to choose a value for the 0x601 MSR. I tried both values and both worked. However, doing the calculations stated in the other issue I got slightly lower values for vCore and frequency (measured via i7z).
Reacted by Daniel TangI also have this issue randomly with my i5-1135G7 after a cold boot, @danielzgtg your suggestion work like a charm on my Manjaro installation, thanks! Without it i7z reported a multiplier of max. 5x-6x on all CPU Cores which is unbearable slow...
This worked for me once, and now it's not working at all. Same register same value. I'm not sure what else to try at the moment. All my cores are stuck at 400MHz or slower.
Further, I cannot get a good reboot or shutdown where the cores are working right
33 remaining items
- added a commit that references this issue
on Mar 6, 2026 - added a commit that references this issue
on Mar 10, 2026 - added a commit that references this issue
on Mar 10, 2026 - added a commit that references this issue
on Apr 10, 2026 - added a commit that references this issue
on May 12, 2026 - added a commit that references this issue
on May 13, 2026 - added a commit that references this issue
on Jun 5, 2026 - added a commit that references this issue
on Jul 3, 2026
My Surface becomes slow, usually after a resume from suspend.
The CPU seems to be throttled to 1500 MHz. I've tried changing powersave/performance modes, etc, but nothing seems to help other than a reboot.
I'm viewing cpu information via:
watch -n 0,3 'cat /proc/cpuinfo | grep "MHz"'Environment