https://bugs.kde.org/show_bug.cgi?id=521400

            Bug ID: 521400
           Summary: KDE HPD Bounce Bug — NVIDIA/Wayland Display Re-enable
                    Loop
    Classification: Plasma
           Product: KScreen
      Version First 6.6.5
       Reported In:
          Platform: EndeavourOS
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: kscreen-doctor
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

Created attachment 193114
  --> https://bugs.kde.org/attachment.cgi?id=193114&action=edit
logs

Thought process
Thought process
Here it is, formatted to drop straight in:

DESCRIPTION
When a display output is disabled via kscreen-doctor output.X.disable on NVIDIA
Open kernel module + Wayland, KDE re-enables it automatically within ~10
seconds. The cycle repeats indefinitely.

Root cause: NVIDIA DRM fires a HOTPLUG=1 udev event on every modesetting commit
(including the commit that performs the disable). libddcutil inside
org_kde_powerdevil polls the DDC/I2C bus on each hotplug event. Because DDC/I2C
pins remain electrically live even after DRM disables the output, the EDID read
succeeds and libddcutil emits DDCA_EVENT_DISPLAY_CONNECTED. This triggers
kscreen2 to re-apply its saved configuration with the output enabled — which
fires another modesetting commit, another HPD event, and the loop continues.

STEPS TO REPRODUCE

Start a Wayland session on NVIDIA Open kernel module (driver 610.x+)
Run: kscreen-doctor output.DP-1.disable (or disable any connected output)
Observe the output in udevadm monitor --udev --subsystem-match=drm
OBSERVED RESULT
The disabled output re-enables itself within ~10 seconds. udevadm monitor shows
pairs of change events on card1 firing every 4–8 seconds indefinitely.
kwin_wayland reinitializes display state (cursor theme reloads visible in
journalctl) at the same cadence. The output never stays disabled.

UDEV  [9283.996607] change   /devices/pci0000:00/.../drm/card1 (drm)
UDEV  [9284.012431] change   /devices/pci0000:00/.../drm/card1 (drm)
UDEV  [9287.170488] change   /devices/pci0000:00/.../drm/card1 (drm)
UDEV  [9287.178803] change   /devices/pci0000:00/.../drm/card1 (drm)
[repeats every 4–8 seconds]
EXPECTED RESULT
An output explicitly disabled by the user should remain disabled.
KScreen/powerdevil should distinguish between a genuine physical reconnect (new
cable, different EDID) and a software modesetting HPD event on an
already-connected cable, and should not re-enable outputs the user
intentionally disabled.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux
KDE Plasma Version: 6.6.5
KDE Frameworks Version: 6.26.0
Qt Version: 6.11.1
Kernel Version: 7.0.11-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 8 × AMD Ryzen 7 9800X3D 8-Core Processor
Memory: 64 GiB of RAM (60.4 GiB usable)
Graphics Processor: NVIDIA RTX 4080 (Open kernel module, driver 610.43.02)

ADDITIONAL INFORMATION

GPU: NVIDIA RTX 4080, driver 610.43.02 Open kernel module
Graphics platform: Wayland
All three monitors connected via DisplayPort
Bug 426609 is superficially similar (monitor waking from power save) but is
AMD-specific and was resolved upstream against the AMD DRM driver. This bug is
NVIDIA-specific and occurs on explicit user-initiated disable, not during
power-save cycles.
kscreen2 debug logging via QT_LOGGING_RULES does not appear to surface in
journalctl on Plasma 6.6.5; the loop is confirmed via udev and kwin_wayland
side effects only.
Workaround: use a physical HDMI dummy plug on an unused port to provide an
isolated virtual display, avoiding the need to disable active outputs.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to