post about PSR

This commit is contained in:
Jan Wolff 2024-08-17 13:07:22 +02:00
parent ab9fc93782
commit c4c7c1570d

View file

@ -0,0 +1,47 @@
---
title: "How I stopped my laptop from giving me a seizure"
date: 2024-08-17T12:50:38+02:00
---
Recently I treated myself to a _Dell XPS 13 9340_. The Thinkpad X220 I'd been
rocking since university is a really nice machine, but it's low specs really
started to interfere with my daily tasks...
The Dell had been running great. It runs the latest Fedora Silverblue without
any driver issues. Then, one day, the screen suddenly started to glitch
immediately after boot. Essentially, whenever an area of the screen was
updated, there was a chance that it just gave up and drew a colorful horizontal
line instead. This behaviour looked liked a failed monitor at first. It also
appeared directly after boot in the graphical LUKS passphrase prompt.
But suspiciously, the behaviour didn't appear in the system setup outside of
Linux. So I was either facing a failed GPU (which would suck) or a faulty
driver (which would've sucked a lot less).
A lot of searching brought up a third option however. Like all modern chipsets,
the laptop supports [Panel Self Refresh (PSR)](https://www.anandtech.com/show/7208/understanding-panel-self-refresh). PSR helps to save power, because it allows the display driver to simply
not update the display if nothing on the display has changed. While cool, it can cause
issues with [Screen Flickering](https://wiki.archlinux.org/title/Intel_graphics#Screen_flickering).
So I tried disabling that to see if anything changes. On _Fedora Silverblue_
kernel parameters are modified via `rpm-ostree kargs`. So, to disable PSR:
```sh
rpm-ostree kargs --append=i915.enable_psr=0
```
This appends `i915.enable_psr=0` to the kernel parameters, which in turn
disables PSR in the Intel Video driver (i915).
And... it worked! The display was no longer going haywire.
Then I wanted to take a picture of this bug for this blogpost. So:
```sh
rpm-ostree kargs --delete=i915.enable_psr=0
```
And... Nothing. PSR was enabled again and... No flickering.
I've chosen to accept this for now. If the flickering returns, I have this post
to copy-and-paste the kernel parameter from :)