When a link-training attempt fails, emit a uevent to user space that
includes the trigger property, which in this case will be
link-statue=Bad.

This will allow userspace to parse the uevent property and better
understand the reason for the previous modeset failure.

Change-Id: I6170e2755121adf04621ae4fff06985bf4b26d3a
Signed-off-by: Gil Dekel <gilde...@chromium.org>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 71f54e56c4434..f45c3bab743cc 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -42,6 +42,7 @@
 #include <drm/drm_crtc.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_probe_helper.h>
+#include <drm/drm_sysfs.h>

 #include "g4x_dp.h"
 #include "i915_debugfs.h"
@@ -5326,6 +5327,8 @@ static void intel_dp_modeset_retry_work_fn(struct 
work_struct *work)
        struct intel_dp *intel_dp =
                container_of(work, typeof(*intel_dp), modeset_retry_work);
        struct drm_connector *connector = &intel_dp->attached_connector->base;
+       struct drm_property *link_status_property =
+               connector->dev->mode_config.link_status_property;

        /* Set the connector's (and possibly all its downstream MST ports') link
         * status to BAD.
@@ -5342,7 +5345,7 @@ static void intel_dp_modeset_retry_work_fn(struct 
work_struct *work)
        }
        mutex_unlock(&connector->dev->mode_config.mutex);
        /* Send Hotplug uevent so userspace can reprobe */
-       drm_kms_helper_connector_hotplug_event(connector);
+       drm_sysfs_connector_status_event(connector, link_status_property);
 }

 bool
--
Gil Dekel, Software Engineer, Google / ChromeOS Display and Graphics

Reply via email to