# Update — workaround developed, root cause partially identified After several hours of investigation I've identified the root cause and built a working in-kernel mitigation. Sharing in case it's useful for the maintainers or other affected users. ## Hardware / software - Dell XPS 15 9530 (Raptor Lake-P / Alder Lake-P) - eDP-1: panel marker "4DWVJ" (IGZO IPS 1920x1200, Dell KB 000218908 lists this panel as known-flicker) - Ubuntu 26.04 Desktop classic (model `ubuntu-classic-2604-amd64`), snap-managed pc-kernel, grade `signed`, Enhanced Secure Boot FDE - Kernel: 7.0.0-15-generic (current pc-kernel snap) - i915 driver active (xe also loaded but inactive on this iGPU) ## Root cause Two compounding issues: 1. **VBT is generic / not customised for the actual panel**: - Panel name field is the placeholder string "LFP_PanelName" - Reported resolution is 1024x768 (the panel is 1920x1200) - PSR `Idle frames before enable` = 3 (very aggressive; conservative defaults are 16+) - PSR + DRRS combination known to misbehave on this panel 2. **The 4DWVJ panel firmware itself oscillates** between PSR states autonomously (sink status alternates 0x2 / 0x4 / 0x0 in a tight loop visible at /sys/kernel/debug/dri/*/eDP-1/i915_psr_sink_status). Each timing re-sync triggers a cascade in the source side: link retrain → PCIe re-enumeration on the Thunderbolt bus → the famous USB "clink-clong" of the Dell TB15/TB16 dock + brief Bluetooth disconnect on hci0. This last part is what makes the bug user-visible. ## Why the standard workarounds don't apply on Ubuntu 26.04 grade=signed | Standard mitigation | Why it fails here | |---------------------|-------------------| | `i915.enable_psr=0` via GRUB | No GRUB; snap-bootstrap + systemd-boot | | `snap set system system.kernel.cmdline-append=...` | Gadget snap (pc/220) whitelist allows only `quiet` and `splash` | | `system.kernel.dangerous-cmdline-append=...` | Requires model grade `dangerous`; this image is grade `signed` | | `/etc/modprobe.d/i915.conf options i915 enable_psr=0` | Ignored: i915 loads from the initrd embedded in `kernel.efi` before the rootfs is mounted | | Write `/sys/module/i915/parameters/enable_psr` | Mode 0400 (read-only) | | Write `/sys/kernel/debug/dri/.../i915_edp_psr_debug` | Blocked by kernel lockdown=integrity (Secure Boot) | | Recompile i915 with a quirk | Cannot be unloaded online (active clients); the initrd-embedded i915 always wins | This is, in practice, a class of regression for any system that: - Uses snap-based pc-kernel - Has FDE Enhanced + Secure Boot - Has a panel that requires `i915.enable_psr=0` ## Workaround I'm running now Signed out-of-tree kernel module that combines two layers: 1. **klp_func livepatch** replacing `intel_psr_compute_config` and `intel_psr_enable_locked` of the i915 module with no-ops. 2. **kprobe** on `intel_psr_init_dpcd@i915` that, on each connector re-detect, calls `intel_psr_debug_set(intel_dp, I915_PSR_DEBUG_DISABLE)` via a workqueue. The module is signed with the NVIDIA Driver Signing MOK (already enrolled in this system), so Secure Boot stays enabled and TPM PCR sealing for FDE is not perturbed. DKMS handles automatic recompilation across kernel updates. This eliminates the flicker, the dock USB cascade and the Bluetooth drops in real-world use. ## What would actually help from Canonical / upstream Either of these would solve it cleanly without per-user workarounds: 1. **Add `i915.enable_psr` to the gadget pc snap kernel cmdline whitelist** (alongside `quiet` and `splash`). It's a well-known stable parameter and would unblock everyone on grade=signed images with PSR-affected panels. 2. **Add a quirk in `intel_psr_init` for panels with placeholder VBT ("LFP_PanelName" + 1024x768 resolution + PSR enabled)** — that combination is a strong indicator of an OEM-shipped VBT that wasn't customised for the actual installed panel, and PSR should be defaulted to off in that case. 3. Alternatively, **a quirk specifically matching the Dell 4DWVJ panel manufacturer/model identifier** (Dell KB 000218908 already documents the issue and Dell's recommendation is "disable PSR" — a kernel-side quirk would mirror that). The Latitude 7430/9430 case in LP #2065096 is the same underlying issue manifested differently because those models are not on grade=signed. Happy to provide more diagnostic data, kernel logs, ftrace captures or test patches against current trunk. -- You received this bug notification because you are subscribed to linux in Ubuntu. Matching subscriptions: Bgg, Bmail, Nb https://bugs.launchpad.net/bugs/2152105 Title: i915 PSR causes display+USB+BT glitches on XPS 15 9530; kernel cmdline whitelist on 26.04 blocks i915.enable_psr=0 workaround Status in linux package in Ubuntu: New Bug description: == Hardware == - Dell XPS 15 9530 (BIOS 1.29.0) - iGPU: Intel Raptor Lake-P [Iris Xe Graphics] (device ID a7a0, integrated display version 13.00 stepping E0) - dGPU: NVIDIA RTX 4060 Max-Q (Optimus, displays driven by iGPU) - Connected: internal eDP-1 panel (PSR1 capable) + 2x DisplayPort over Dell Thunderbolt Dock == Software == - Ubuntu Desktop 26.04, snap model `ubuntu-classic-2604-amd64`, grade `signed` (FDE Enhanced, TPM-sealed LUKS) - Kernel: 7.0.0-15-generic (pc-kernel snap rev 3419, channel 26.04/stable) - Bootloader: systemd-boot via signed kernel.efi from pc-kernel snap (Secure Boot + kernel lockdown active) == Symptom == Recurring display flicker on the eDP panel together with simultaneous USB re-enumeration ("clink-clong" sound on the Dell TB Dock), USB audio interruption, and brief Bluetooth (hci0) drop. Episodes last ~1 second and repeat several times per day, more frequently when the dGPU activates (e.g. Steam/PRIME render offload). PSR debug status during the glitch shows the panel stuck in SRDENT (Self-Refresh Data Enable) with very high transition rate; counter rises ~500/s. State returns to IDLE when the symptom resolves: Source PSR/PanelReplay status: SRDENT [0x400f0009] (during glitch) Source PSR/PanelReplay status: IDLE [0x040b0001] (resolved) This matches Dell's documented hardware issue for the XPS 15 9530 panel ("LCD Screen on the XPS 15 9530 Randomly Flickers", KB 000218908) where Dell themselves recommend disabling PSR in the Intel Graphics Command Center on Windows. Was not happening on Ubuntu 24.04 with kernel 6.x — regression introduced by the move to kernel 7.0 and/or pc-kernel snap on 26.04. == Evidence (captured 2026-05-09) == PSR state DURING a flicker episode (22:47): Source PSR/PanelReplay status: IDLE [0x04090003] Sink PSR status: 0x4 [transition to inactive, capture and display, timing re-sync] A live monitor of i915_edp_psr_status detected 7 PSR transitions in a 10s window coinciding with the visible flicker. PSR state ~1 minute later, after the symptom resolved (22:49): Source PSR/PanelReplay status: SRDENT [0x40030009] Sink PSR status: 0x2 [active, display from RFB] The "timing re-sync" sink state is what produces the visible flicker on the eDP panel; it also triggers cascading PCIe runtime PM activity that re-enumerates USB devices on the Thunderbolt dock (audible "clink-clong") and briefly drops Bluetooth on hci0. == Standard workaround is blocked == The well-known workaround `i915.enable_psr=0` cannot be applied on 26.04 with the current setup: 1. /etc/default/grub does not exist / is not consumed (snap-managed kernel cmdline). 2. `snap set system system.kernel.cmdline-append="i915.enable_psr=0"` fails with: "i915.enable_psr=0" is not allowed in the kernel command line by the gadget The pc gadget snap (rev 220) gadget.yaml whitelist only permits `quiet` and `splash`. 3. `system.kernel.dangerous-cmdline-append` is not usable: requires model grade `dangerous`. This system is grade `signed` (Enhanced FDE). 4. /etc/modprobe.d/i915-disable-psr.conf with `options i915 enable_psr=0` is ignored: i915 loads from the initrd embedded in kernel.efi (signed) before the encrypted rootfs is mounted, so the local modprobe.d is never consulted. Verified by reboot test (enable_psr stays at -1). 5. /sys/module/i915/parameters/enable_psr* are read-only at runtime (mode 0400 root, write returns Permission denied even with sudo). 6. /sys/kernel/debug/dri/.../i915_edp_psr_debug write is blocked by kernel lockdown (Secure Boot). Net result: a user with `signed` Enhanced FDE on this hardware has no supported way to disable a known-buggy display feature. == Request == Either: (a) Add the well-known display-related i915 parameters (i915.enable_psr, i915.enable_fbc, i915.enable_psr2_sel_fetch, i915.enable_dc) to the kernel-cmdline allow list of the `pc` gadget snap, so users on `signed` FDE Enhanced systems can apply standard hardware workarounds; or (b) Quirk-disable PSR in the i915 driver for the Dell XPS 15 9530 panel (and similar panels with documented Dell-side PSR issues), in line with Dell's own Windows guidance. == Related == - LP #2065096 — i915 Display is Laggy/Unresponsive when PSR is enabled (Dell Latitude 7430/9430, same root cause, 24.04 / kernel 6.8). Workaround there is i915.enable_psr=0 in GRUB — that escape hatch no longer exists on 26.04 with `signed` FDE. - Dell KB 000218908 — XPS 15 9530 random flickering, recommends disabling PSR. - Discourse: "The pc-kernel snap on 26.04 prevents users from installing additional firmware" — same family of customisation lock-out issues on 26.04. ProblemType: Bug DistroRelease: Ubuntu 26.04 Package: linux-image-7.0.0-15-generic (not installed) ProcVersionSignature: Ubuntu 7.0.0-15.15-generic 7.0.0 Uname: Linux 7.0.0-15-generic x86_64 NonfreeKernelModules: nvidia_modeset nvidia ApportVersion: 2.34.0-0ubuntu2 Architecture: amd64 CasperMD5CheckResult: unknown CurrentDesktop: ubuntu:GNOME Date: Sat May 9 22:18:19 2026 IwDevWlp0s20f3Link: Not connected. MachineType: Dell Inc. XPS 15 9530 ProcEnviron: LANG=es_ES.UTF-8 PATH=(custom, no user) SHELL=/bin/bash TERM=xterm-256color XDG_RUNTIME_DIR=<set> ProcFB: 0 i915drmfb ProcKernelCmdLine: snapd_recovery_mode=run console=ttyS0,115200n8 console=tty1 panic=-1 quiet splash snapd.xkb="es,pc105,," SourcePackage: linux UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 12/24/2025 dmi.bios.release: 1.29 dmi.bios.vendor: Dell Inc. dmi.bios.version: 1.29.0 dmi.board.name: 0P6GXD dmi.board.vendor: Dell Inc. dmi.board.version: A00 dmi.chassis.type: 10 dmi.chassis.vendor: Dell Inc. dmi.ec.firmware.release: 1.17 dmi.modalias: dmi:bvnDellInc.:bvr1.29.0:bd12/24/2025:br1.29:efr1.17:svnDellInc.:pnXPS159530:pvr:rvnDellInc.:rn0P6GXD:rvrA00:cvnDellInc.:ct10:cvr:sku0BEB:pfaXPS: dmi.product.family: XPS dmi.product.name: XPS 15 9530 dmi.product.sku: 0BEB dmi.sys.vendor: Dell Inc. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2152105/+subscriptions
Комментариев нет:
Отправить комментарий