Greetings,
I am using Manjaro Sway on a Lenovo X1C12 and am trying to optimize the battery life. One thing that stands out is that the vanilla system somehow ships with an incompatible configuration that does not allow the laptop to enter the deep S0ix sleep states correctly. This is solved by applying a correct PCIe ASPM policy. The system still cannot achieve a correct PC10 residency with the screen on and I can’t figure out why (it doesn’t even achieve that in VT mode).
The other issue is that when I read the PSR/EDP status it mostly appears to be in IDLE
mode.
The Intel test tool shows the following:
The CPU runtime PC10 residency when screen ON: 3.69%
The CPU runtime PC8 residency when screen ON: 52.30%
Turbostat log:
30.005120 sec
CPU%c1 CPU%c6 CPU%c7 Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc8 Pk%pc10
2.60 80.28 14.84 9.56 0.02 2.75 52.30 3.69
2.03 95.94 0.00
2.34 96.08 0.00
2.17 96.49 0.00
1.76 97.00 0.00
3.60 95.51 0.00
3.59 95.49 0.00
4.71 94.15 0.00
2.21 96.80 0.00
1.11 0.45 88.58 9.56 0.02 2.75 52.30 3.69
1.11
4.04 0.32 89.49
4.04
1.82 97.65 0.00
1.89 97.54 0.00
Your system achieved the runtime PC10 during screen ON,
but the residency is too low and need to do the further debugging: 3.69%
Potential Isolation Check:
Display DC5 count delta is 8 in 40 seconds idle,
which stands for display behavior.
Display DC6 count delta is in 40 seconds idle,
which includes other peripheral besides display.
/sys/kernel/debug/dri/0/i915_dmc_info shows:
DMC initialized: yes
fw loaded: yes
path: i915/mtl_dmc.bin
Pipe A fw needed: yes
Pipe A fw loaded: yes
Pipe B fw needed: yes
Pipe B fw loaded: yes
version: 2.23
DC3CO count: 0
DC3 -> DC5 count: 1902
program base: 0x0e004040
ssp base: 0x00086fc0
htp: 0x042c0408
and the PSR status shows the following:
sudo cat /sys/kernel/debug/dri/1/i915_edp_psr_status
Sink support: PSR = yes [0x03], Panel Replay = no, Panel Replay Selective Update = no
PSR mode: PSR2 enabled
Source PSR/PanelReplay ctl: enabled [0x80004a99]
Source PSR/PanelReplay status: IDLE [0x04000000]
Busy frontbuffer bits: 0x00000000
Performance counter: 0
Frame: PSR2 SU blocks:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
PSR2 selective fetch: enabled
I already tried to force the system to boot with the conservative PSR values (PSR1) but that didn’t really do anything, and I’m not sure whether to try to force it into using FBC or not. The laptop shows about 3-4 watts discharge under very light/idle state but I wonder if this can be further improved.
Many thanks