48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
|
---
|
||
|
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 :)
|