https://bugs.kde.org/show_bug.cgi?id=524273
Bug ID: 524273
Summary: Screens briefly freeze due to plugged in but disabled
tv
Classification: Plasma
Product: kwin
Version First 6.7.2
Reported In:
Platform: Bazzite
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: wayland-generic
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
SUMMARY
A TV in standby attached to one DisplayPort output (DP-4, disabled in the
output configuration) periodically pulses the hotplug-detect line. Each pulse
causes a visible presentation stall (a fraction of a second) on ALL enabled
outputs simultaneously. The pulses arrive in pairs 1-2 s apart every 15-30
minutes, so the user experience is a paired system-wide hitch at random
intervals, with audio unaffected. Unplugging the TV's cable stops the hitches
completely.
During each pulse, kwin_wayland burns ~0.5-1.0 s of CPU (measured as 51-79
jiffies of utime+stime inside a 2 s sampling window), consistent with a
blocking re-probe of all connectors (EDID/DDC reads) on the hotplug event.
Note the connector state is IDENTICAL before and after each pulse pair, and
the flapping output is not even enabled — yet every enabled output stalls.
On this driver (nvidia-drm, open kernel modules) the hotplug uevents are
card-level with no CONNECTOR= property, so KWin presumably cannot tell which
connector changed and re-probes everything. That makes the blocking probe
worse, but the stall itself is compositor-side.
STEPS TO REPRODUCE
Multi-output Wayland session on an NVIDIA GPU (4 connectors used here:
DP-2, DP-3, DP-4, HDMI-A-2 on an RTX 4080, nvidia-drm open modules).
Connect a TV to one DP output, leave the output disabled in the display
configuration, and put the TV in standby.
Wait. The TV periodically re-asserts/drops HPD (many TVs do this in
standby for input scanning / quick-start).
OBSERVED RESULT
On every HPD pulse, all enabled outputs freeze for a fraction of a second;
pulses come in pairs so the freeze is felt twice, 1-2 s apart. Audio and
non-compositor workloads continue normally.
Kernel uevent monitor + per-connector sysfs snapshot on each event
(timestamps local):
18:07:35.165 EVENT KERNEL change .../drm/card2 (drm) HOTPLUG=1
18:07:35.167 STATE DP-2=connected/256 DP-3=connected/256 DP-4=connected/256
HDMI-A-2=connected/256
18:07:35.331 EVENT KERNEL change .../drm/card2 (drm) HOTPLUG=1
18:07:35.332 STATE DP-2=connected/256 DP-3=connected/256 DP-4=disconnected/0
HDMI-A-2=connected/256
18:07:36.187 EVENT KERNEL change .../drm/card2 (drm) HOTPLUG=1
18:07:36.188 STATE DP-2=connected/256 DP-3=connected/256 DP-4=disconnected/0
HDMI-A-2=connected/256
18:07:36.513 EVENT KERNEL change .../drm/card2 (drm) HOTPLUG=1
18:07:36.514 STATE DP-2=connected/256 DP-3=connected/256 DP-4=connected/256
HDMI-A-2=connected/256
(format: connector=status/EDID-bytes; DP-4 drops to disconnected with 0-byte
EDID for ~1.2 s, then returns; net state change: none.)
Simultaneous kwin_wayland CPU burst from a 2 s sampler
(utime+stime delta in jiffies per 2 s window, normally 0-5):
18:07:36 kwin_cpu delta=51 (~0.5 s CPU)
18:07:38 kwin_cpu delta=79 (~0.8 s CPU)
The same correlation was captured on an earlier occurrence (hotplug uevents
23:33:21-22, kwin deltas 52 and 74 at 23:33:22/23:33:24, previous day), and
the user-felt hitches match these timestamps exactly. Over one day the TV
flapped 22 times (roughly every 15-30 min); every flap produced the same
signature. System-side counters ruled out other causes: memory/IO PSI flat,
no major faults, no swap-in, GPU idle (0% util, no throttle reasons, no Xid
errors) at every event.
EXPECTED RESULT
A hotplug event — especially one affecting only a disabled output, and
doubly so one that resolves to "nothing changed" — should not interrupt
presentation on unrelated enabled outputs. Ideas: debounce HPD pulses,
re-probe connectors asynchronously off the presentation path, or compare
probed state and short-circuit when nothing changed before touching active
outputs.
SOFTWARE/OS VERSIONS
Operating System: Bazzite 44 (Fedora Atomic, bazzite-nvidia-open)
KDE Plasma Version: 6.7.2
KWin version: 6.7.2
Kernel Version: 7.1.3-ogc3.4.fc44.x86_64
Graphics: NVIDIA RTX 4080, driver 610.43.03 (open kernel modules), Wayland
ADDITIONAL INFORMATION
Workaround: unplugging the TV's DP cable stops the hitches entirely
(verified — zero uevents and zero hitches afterwards).
Full uevent/connector logs and the 2 s system sampler logs are available on
request.
--
You are receiving this mail because:
You are watching all bug changes.