From: Lyude Paul <cpaul@xxxxxxxxxx> DRM does not always update the status of each connector during a hotplug event, and it's generally expected that userspace is supposed to handle that by reprobing. This happens in a couple situations: suspend/resume, MST hotplugs, and probably a few others. As a result, making this assumption actually breaks MST hotplugging. Changes since v1: - Fix removal of break statements from switch case Signed-off-by: Lyude <cpaul@xxxxxxxxxx> --- src/sna/sna_display.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 0cf2bdb..79c72cc 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -5114,7 +5114,7 @@ void sna_mode_discover(struct sna *sna, bool tell) ScreenPtr screen = xf86ScrnToScreen(sna->scrn); xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn); struct drm_mode_card_res res; - uint32_t connectors[32], now; + uint32_t connectors[32]; unsigned changed = 0; unsigned serial; int i, j; @@ -5146,7 +5146,6 @@ void sna_mode_discover(struct sna *sna, bool tell) if (serial == 0) serial = ++sna->mode.serial; - now = GetTimeInMillis(); for (i = 0; i < res.count_connectors; i++) { DBG(("%s: connector[%d] = %d\n", __FUNCTION__, i, connectors[i])); for (j = 0; j < sna->mode.num_real_output; j++) { @@ -5172,13 +5171,10 @@ void sna_mode_discover(struct sna *sna, bool tell) continue; if (sna_output->serial == serial) { - if (output_check_status(sna, sna_output)) { - DBG(("%s: output %s (id=%d), retained state\n", - __FUNCTION__, output->name, sna_output->id)); - sna_output->last_detect = now; - } else { - DBG(("%s: output %s (id=%d), changed state, reprobing\n", - __FUNCTION__, output->name, sna_output->id)); + if (!output_check_status(sna, sna_output)) { + DBG(("%s: output %s (id=%d), changed state, reprobing]\n", + __FUNCTION__, output->name, sna_output->id, + sna_output->serial, serial)); sna_output->last_detect = 0; changed |= 4; } -- 2.5.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx