[PATCH] drm/i915: Wait one vblank before sending hotplug event to userspace

Mika Kahola mika.kahola at intel.com
Thu Nov 29 13:57:45 UTC 2018


If we fail to train link for DisplayPort, we send out a hotplug event to
userspace to reprobe and re-train the link. Let's wait for one additional
vblank event before sending a hotplug event to userspace.

References: https://bugs.freedesktop.org/show_bug.cgi?id=108835

Signed-off-by: Mika Kahola <mika.kahola at intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 70ae3d57316b..1e3a4f447131 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -6557,6 +6557,8 @@ static void intel_dp_modeset_retry_work_fn(struct work_struct *work)
 {
 	struct intel_connector *intel_connector;
 	struct drm_connector *connector;
+	struct drm_i915_private *dev_priv;
+	enum pipe pipe;
 
 	intel_connector = container_of(work, typeof(*intel_connector),
 				       modeset_retry_work);
@@ -6564,6 +6566,9 @@ static void intel_dp_modeset_retry_work_fn(struct work_struct *work)
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id,
 		      connector->name);
 
+	dev_priv = to_i915(connector->dev);
+	pipe = intel_connector_get_pipe(intel_connector);
+
 	/* Grab the locks before changing connector property*/
 	mutex_lock(&connector->dev->mode_config.mutex);
 	/* Set connector link status to BAD and send a Uevent to notify
@@ -6572,6 +6577,9 @@ static void intel_dp_modeset_retry_work_fn(struct work_struct *work)
 	drm_connector_set_link_status_property(connector,
 					       DRM_MODE_LINK_STATUS_BAD);
 	mutex_unlock(&connector->dev->mode_config.mutex);
+
+	intel_wait_for_vblank(dev_priv, pipe);
+
 	/* Send Hotplug uevent so userspace can reprobe */
 	drm_kms_helper_hotplug_event(connector->dev);
 }
-- 
2.17.1



More information about the Intel-gfx-trybot mailing list