We do not update the status of connector when receiving MST unplug event. Call detect function to get latest status and then update status of connector. Before applying the patch: [313.665321] [drm:intel_get_hpd_pins [i915]] hotplug event received, stat 0x00200000, dig 0x10101012, pins 0x00000020 [313.665383] [drm:intel_hpd_irq_handler [i915]] digital hpd port B - long [313.665436] [drm:intel_hpd_irq_handler [i915]] Received HPD interrupt on PIN 5 - cnt: 0 [313.665539] [drm:intel_dp_hpd_pulse [i915]] got hpd irq on port B - long [313.944743] [drm:intel_dp_destroy_mst_connector [i915]] [313.944848] [drm:intel_dp_destroy_mst_connector [i915]] After applying the patch: [43.175798] [drm:intel_dp_destroy_mst_connector [i915]] [CONNECTOR:70:DP-4] status updated from connected to disconnected [43.175870] [drm:intel_dp_destroy_mst_connector [i915]] [43.177675] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:70:DP-4] [43.177679] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:70:DP-4] disconnected Signed-off-by: Ethan Hsieh <ethan.hsieh@xxxxxxxxxxxxx> --- drivers/gpu/drm/i915/intel_dp_mst.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index e4ea968..b02a9a8 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -492,6 +492,20 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, { struct intel_connector *intel_connector = to_intel_connector(connector); struct drm_i915_private *dev_priv = to_i915(connector->dev); + enum drm_connector_status old_status; + + mutex_lock(&connector->dev->mode_config.mutex); + old_status = connector->status; + connector->status = connector->funcs->detect(connector, false); + + if (old_status != connector->status) + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n", + connector->base.id, + connector->name, + drm_get_connector_status_name(old_status), + drm_get_connector_status_name(connector->status)); + + mutex_unlock(&connector->dev->mode_config.mutex); drm_connector_unregister(connector); -- 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx