CR-2026-06-19: Rollback

Rollback Plan

Rollback removes i915.enable_psr=0 from all locations, restoring the kernel’s default PSR behavior. Use this only if disabling PSR causes display artifacts, GPU errors, or unexpected power consumption.

Removing i915.enable_psr=0 will re-enable PSR, which is known to hang the eDP-1 display pipe on kernel 7.0.x with Arrow Lake-S. Only roll back if a newer kernel has fixed the PSR regression, or if disabling PSR introduces a worse problem.

Step 1: Remove from ESP Boot Entries

Before
sudo awk '/^options/' /boot/efi/loader/entries/arch.conf /boot/efi/loader/entries/arch-lts.conf
Change — remove the parameter
sudo sed -i 's/ i915.enable_psr=0//' /boot/efi/loader/entries/arch.conf /boot/efi/loader/entries/arch-lts.conf
After
sudo awk '/^options/' /boot/efi/loader/entries/arch.conf /boot/efi/loader/entries/arch-lts.conf

Step 2: Remove from XBOOTLDR Entry

sudo sed -i 's/ i915.enable_psr=0//' /boot/loader/entries/arch.conf

Step 3: Remove from Persistent Cmdline

Two options:

Option A — remove the parameter but keep the file (recommended)
sudo sed -i 's/ i915.enable_psr=0//' /etc/kernel/cmdline
cat /etc/kernel/cmdline
Option B — delete the file entirely (only if no other custom parameters)
sudo rm /etc/kernel/cmdline
ls -la /etc/kernel/cmdline 2>&1
Deleting /etc/kernel/cmdline means kernel-install will fall back to its default behavior for generating boot entry options. This may or may not preserve your other parameters (nvidia_drm.modeset=1, mem_sleep_default=s2idle, etc.). Option A is safer.

Step 4: Reboot

sudo reboot

Step 5: Verify PSR Re-enabled

# PSR parameter should be absent
grep 'i915.enable_psr' /proc/cmdline && echo "STILL PRESENT -- rollback incomplete" || echo "Removed -- PSR at kernel default"

# Check PSR status
sudo cat /sys/kernel/debug/dri/1/i915_edp_psr_status 2>/dev/null

Filesystem-Level Rollback (Nuclear Option)

If the parameter-level rollback (Steps 1-5) is insufficient or the system is unbootable, restore the pre-change btrfs snapshot taken in Phase 0 of the implementation.

# 1. Boot from LTS kernel (select "Arch Linux LTS" at systemd-boot menu)
#    or boot from a live USB

# 2. Unlock and mount the btrfs volume
sudo cryptsetup luksOpen /dev/<device> cryptroot
sudo mount /dev/mapper/cryptroot /mnt

# 3. Replace current @ with the pre-change snapshot
sudo mv /mnt/@ /mnt/@broken-psr-fix
sudo btrfs subvolume snapshot /mnt/@snapshots/pre-psr-fix-2026-06-19 /mnt/@

# 4. Reboot into restored system
sudo umount /mnt
sudo reboot
This restores the entire root subvolume to its pre-change state, including /etc/kernel/cmdline and any other changes made since the snapshot. /home is on a separate subvolume (@home) and is unaffected.

After restoring, clean up:

# Remove the broken subvolume
sudo mount /dev/mapper/cryptroot /mnt
sudo btrfs subvolume delete /mnt/@broken-psr-fix
sudo umount /mnt

When to Re-enable PSR (Remove This Fix)

Test PSR on future kernels periodically:

# Quick DPMS cycle test -- if display wakes, PSR is fixed upstream
hyprctl dispatch dpms off && sleep 5 && hyprctl dispatch dpms on

If the display wakes reliably on a future kernel, remove i915.enable_psr=0 from /etc/kernel/cmdline and the boot entries per Steps 1-5 above.