I spent a day tuning my Surface Laptop 4 15" (Ryzen 7 4980U, Vega 8, 8 GB) on Windows 10 IoT LTSC. I wanted three UXTU profiles: one for battery (mostly Netflix), one for plugged-in use (Google Meet with background blur), and one for gaming.
What I found
My CPU had been running on 8 threads instead of 16 for months. The UEFI showed SMT enabled, and the firmware's ACPI tables listed all 16 threads, but Windows only started one per core. The cause was a stray registry value, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\FeatureSettings = 1310720. Cinebench R23 multi went from 5206 to 6907.
I also updated the UEFI from 4.360.140 to 4.501.140. I had installed the older FW before to try and get Linux battery usage to be better, but that didn't work anyway. Microsoft fully closed the door so no amount of software optimization can reveal the power tables to make Linux efficient.
The newer firmware changes how the embedded controller handles power. It lets the chip burst to 25-30 W, then pulls STAPM down to 13-16 W once the chassis heats up, even with the CPU at only 65-70 °C. It also overwrites the STAPM and fast limits within seconds of setting them. The slow and APU PPT limits stick, so those are the ones that actually hold power steady.
That burst-then-clamp behaviour hurts benchmarks. At stock, Time Spy spent its budget on the unscored demo at 21.6 W and then ran the first graphics test at 13.8 W. With a flat 18 W limit the score went from 1001 to 1041, and the CPU sub-score from 4790 to 5120. Temperatures stayed around 64 °C in the graphics tests.
Curve Optimizer works on Renoir, which I didn't expect. At a fixed 12 W, CO -20 dropped core voltage by about 17 mV and raised clocks by 4-5%. The GPU CO command does nothing. CO -30 lifted the Time Spy CPU score to 5253 with no sign of clock stretching. CO -35 passed a 7-Zip stability check but some game scores fell by 6%, so I stayed at -30. The fixed-clock "AMD OC" mode in UXTU is rejected by mobile Renoir firmware.
Capping CPU frequency to give the GPU more power didn't help. At 18 W under a GPU load, the power limiter already holds all cores near 1.5 GHz, so 2.0-3.0 GHz caps never kicked in. Forcing the GPU to 1500 MHz saved 3 W in the graphics tests but kept the GPU pinned during the CPU test, which cost 10% of the CPU score. Vega 8 is limited by memory bandwidth anyway: 17% more GPU clock gave 4% more graphics score.
Above 18 W I got nothing back. The combined GPU+CPU test scored 2035 at 15 W, 2175 at 18 W and 2167 at 20 W.
Even at 18W, the thermal soak meant that after 5min or so of load, temps were an issue. So, I settled on 15W for long-term until I can find a cooling pad that isn't absolutely hideous.
The profiles I ended up with
All three use CO -30. UXTU switches between the first two on its own when I plug or unplug.
- General - Battery: 6 W sustained, 10 W fast limit, 80 °C, power-saving mode. Windows also caps the CPU at 2.0 GHz on battery.
- General - AC: 15 W sustained, 20 W fast limit, 85 °C.
- Gaming: a flat 18 W, 90 °C, max-performance mode. I pick this one by hand.
The battery and AC numbers are estimates based on stock measurements (streaming averaged about 4 W, the Meet stand-in about 9 W). The gaming profile is the one I measured properly.
I also set auto-reapply to 60 seconds instead of 5. It mainly needs to restore limits after sleep, and reapplying every few seconds keeps overriding the controller's skin-temperature protection.
Happy to answer questions, etc.