@@ -863,7 +863,8 @@ static void drm_dp_destroy_port(struct kref *kref)
{
struct drm_dp_mst_port *port = container_of(kref, struct drm_dp_mst_port, kref);
struct drm_dp_mst_topology_mgr *mgr = port->mgr;
- if (!port->input) {
+ bool is_input = port->input;
+ if (!is_input) {
port->vcpi.num_slots = 0;
kfree(port->cached_edid);
@@ -885,7 +886,10 @@ static void drm_dp_destroy_port(struct kref *kref)
}
kfree(port);
- (*mgr->cbs->hotplug)(mgr);
+ /* we should only cause a hotplug if an output port changes
+ * input ports shouldn't. */
+ if (!is_input)
+ (*mgr->cbs->hotplug)(mgr);
}
static void drm_dp_put_port(struct drm_dp_mst_port *port)