Battery Life: PSR - junaruga/framework-laptop-config GitHub Wiki

According to a Framework community thread about tuning a battery life. The enabled Panel Self-Refresh (PSR) feature causes a mouse lag, and bad for a battery life on kernel version (uname -r) < 5.14. It was fixed on the kernel 5.14. So, if you have to use the old kernel, you can disable to prevent this issue.

Disable PSR

My environment is Fedora Linux 35. As the PSR issue was fixed, I didn't have to disable PSR. I did it by misunderstanding. But I would save the log here.

The kernel version is like this.

$ uname -r
5.15.10-200.fc35.x86_64

Check the module i915 exists as a kernel module.

$ lsmod | grep ^i915
i915                 3031040  32

Check the PSR's current status. In my case, this is enabled. In my case, it was enabled.

$ sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status
Sink support: yes [0x03]
PSR mode: PSR2 enabled
Source PSR ctl: enabled [0xc2044a16]
Source PSR status: IDLE [0x04000000]
Busy frontbuffer bits: 0x00000000
Frame:  PSR2 SU blocks:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
PSR2 selective fetch: disabled

Add the line options i915 enable_psr=0 into the newly created file /etc/modprobe.d/i915.conf

$ cd /etc/modprobe.d

$ sudo vi i915.conf
$ cat i915.conf
options i915 enable_psr=0

Update the current kernel's boot initramfs image. On Fedora, use dracut command. See this document for detail.

$ uname -r
5.15.10-200.fc35.x86_64

$ sudo dracut -f /boot/initramfs-5.15.10-200.fc35.x86_64.img

Restart OS.

$ sudo shutdown -r now

You can see the PSR setting is disabled now.

$ sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status
Sink support: yes [0x03]
PSR mode: disabled
PSR sink not reliable: no

Enable PSR

You may want to enable PSR again, after upgrading the kernel >= 5.14.

Check the current status for the PSR.

$ sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status
Sink support: yes [0x03]
PSR mode: disabled
PSR sink not reliable: no

Remove the file about i915 including setting to disable the PSR.

$ cd /etc/modprobe.d/
$ sudo rm i915.conf

Update the current kernel image with the options.

$ uname -r
5.15.10-200.fc35.x86_64

$ sudo dracut -f /boot/initramfs-5.15.10-200.fc35.x86_64.img

Restart OS.

$ sudo shutdown -r now

Check that the PSR is eanbled.

$ sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status
Sink support: yes [0x03]
PSR mode: PSR2 enabled
Source PSR ctl: enabled [0xc2044a16]
Source PSR status: SLEEP [0x30000111]
Busy frontbuffer bits: 0x00000000
Frame:  PSR2 SU blocks:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
PSR2 selective fetch: disabled

References