Hi Imre,

You're right, sorry for the noise.
The fix doesn't belong in the kernel here.

I turned on KWin's DRM debug logging and reproduced again on latest drm-tip 
with your DSC cap patch.
KWin does react to the disconnect, it just never emits the disabling modeset, 
because DP-1 is its only output:

  [kernel] 19:57:15.58  [CONNECTOR:512:DP-1] status updated from connected to 
disconnected
  [kernel] 19:57:15.58  [CONNECTOR:512:DP-1] generating connector hotplug event
  [kwin]   19:57:15     Received change event for monitored drm device 
"/dev/dri/card0"
  [kwin]   19:57:15     Removing output KWin::DrmOutput(...)
           -> no atomic commit from user space, CRTC pipe A stays active
  [kernel] 19:57:17.63  intel_tc_port_link_reset_work Port D/TC#1: TypeC DP-alt 
sink disconnected, resetting link
  [kernel] 19:57:18.13  [CONNECTOR:512:DP-1] Link Training failed at link rate 
= 810000, lane count = 2
  [kernel] 19:57:18.32  intel_enable_transcoder enabling pipe A   <- re-enabled 
on the dead link
  [kernel] 19:57:36+    DP-1 hotplug retry 0..5 -> detect never succeeds -> 
wedged

So KWin tears down its output object on the hotplug, but for the last output it 
drops it internally without committing a CRTC off, so the pipe is never 
disabled.
About 2 s later the TC link reset worker re-enables that still active pipe on 
the dead link.
Had the CRTC been disabled, the pipe and its TC link ref would be gone before 
the worker runs, which I think avoids the wedge.
So this one is mine to fix in user space.
I'll check whether current KWin already handles last output removal 
differently, and otherwise write the fix there.
Thanks for pushing back.

The full boot log up to the wedge and the KWin log are on the ticket [1].

On a separate note, I have a few other small display fixes for this same 
hardware (Synaptics VMM7100 PCON on Panther Lake), still blocked from 
submitting by the CI allowlist.
If you have the bandwidth I'd welcome a quick gut check, otherwise I'll post 
them properly once I'm allowlisted:

  - a DP quirk so the PCON doesn't get stuck at 2 lanes / 6 bpc after a failed 
RBR link training handshake
  - FRL deep color plus preferring DSC over a 6 bpc uncompressed output, which 
gets 4K@120 RGB 12 bpc working
  - reading the PCON max FRL bandwidth only for HDMI DFPs in the DP core, it is 
read unconditionally today
  - a drm_dp_cec fix so CEC tunneling works on these dongles, they do support 
CEC and it is fully functional to my TV

No worries if you don't have time.
The allowlist route is fine too.

[1] https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14807

Thanks,
Alexander

Reply via email to