<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_REOPENED "
title="REOPENED - [SKL] Unplugging the HDMI/DP/mDP cable from dock will not automically resize framebuffer"
href="https://bugs.freedesktop.org/show_bug.cgi?id=101461#c10">Comment # 10</a>
on <a class="bz_bug_link
bz_status_REOPENED "
title="REOPENED - [SKL] Unplugging the HDMI/DP/mDP cable from dock will not automically resize framebuffer"
href="https://bugs.freedesktop.org/show_bug.cgi?id=101461">bug 101461</a>
from <span class="vcard"><a class="email" href="mailto:ethan.hsieh@canonical.com" title="Ethan Hsieh <ethan.hsieh@canonical.com>"> <span class="fn">Ethan Hsieh</span></a>
</span></b>
<pre>Created <span class=""><a href="attachment.cgi?id=132079" name="attach_132079" title="kern.log">attachment 132079</a> <a href="attachment.cgi?id=132079&action=edit" title="kern.log">[details]</a></span>
kern.log
When I unplugged the cable, the status of DP-4 was still "connected".
That is why the framebuffer is not resized automatically.
Here is the log:
[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.944745] intel_dp_destroy_mst_connector: connector->name=DP-4
status=connected
[313.944848] [drm:intel_dp_destroy_mst_connector [i915]]
---
The framebuffer is resized automatically after applying the following
workaround.
drivers/gpu/drm/i915/intel_dp_mst.c
@@ -474,6 +478,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_device *dev = connector->dev;
+ enum drm_connector_status old_status;
+
+ printk(KERN_ERR "%s: connector->name=%s status=%s\n", __func__,
connector->name, drm_get_connector_status_name(connector->status));
+
+ 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));
Here is the log:
[43.175787] intel_dp_destroy_mst_connector: connector->name=DP-4
status=connected
[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</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
<li>You are the QA Contact for the bug.</li>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>