All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-03 16:34 ` Gwan-gyeong Mun
  0 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-03 16:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, David Airlie,
	intel-gfx, dri-devel

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This helper
can detect changing of status of connector, but it can not detect changing of
edid. Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 80 +++++++++++++++++++++++++++-
 1 file changed, 79 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..b92b83d46ccc 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,84 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected". */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid)) != 0) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +630,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-03 16:34 ` Gwan-gyeong Mun
  0 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-03 16:34 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Airlie, intel-gfx, dri-devel, Rodrigo Vivi

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This helper
can detect changing of status of connector, but it can not detect changing of
edid. Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 80 +++++++++++++++++++++++++++-
 1 file changed, 79 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..b92b83d46ccc 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,84 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected". */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid)) != 0) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +630,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-03 16:34 ` Gwan-gyeong Mun
  (?)
@ 2018-08-03 16:56 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-03 16:56 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume
URL   : https://patchwork.freedesktop.org/series/47680/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
3d5692967278 drm/i915: Add detection of changing of edid on between suspend and resume
-:7: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#7: 
The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This helper

-:89: WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line
#89: FILE: drivers/gpu/drm/i915/intel_hotplug.c:566:
+		 * as "connector_status_connected". */

total: 0 errors, 2 warnings, 0 checks, 92 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-03 16:34 ` Gwan-gyeong Mun
  (?)
  (?)
@ 2018-08-03 17:11 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-03 17:11 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4613 -> Patchwork_9848 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9848 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9848, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9848:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_hangman@error-state-basic:
      fi-pnv-d510:        PASS -> DMESG-WARN
      fi-blb-e6850:       PASS -> DMESG-WARN
      fi-bwr-2160:        PASS -> DMESG-WARN

    igt@gem_exec_suspend@basic-s3:
      fi-ilk-650:         PASS -> DMESG-WARN
      fi-skl-guc:         PASS -> DMESG-WARN
      fi-pnv-d510:        PASS -> INCOMPLETE
      fi-hsw-4770:        PASS -> DMESG-WARN
      fi-bxt-j4205:       PASS -> DMESG-WARN
      fi-ivb-3770:        PASS -> DMESG-WARN
      fi-skl-6700k2:      PASS -> DMESG-WARN
      fi-blb-e6850:       PASS -> INCOMPLETE
      fi-hsw-4770r:       PASS -> DMESG-WARN

    igt@gem_exec_suspend@basic-s4-devices:
      fi-hsw-4770:        PASS -> INCOMPLETE
      fi-ilk-650:         PASS -> INCOMPLETE
      fi-hsw-4770r:       PASS -> INCOMPLETE

    igt@kms_addfb_basic@invalid-get-prop:
      fi-bwr-2160:        PASS -> INCOMPLETE

    
== Known issues ==

  Here are the changes found in Patchwork_9848 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_workarounds:
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL (fdo#107292)

    igt@gem_exec_suspend@basic-s4-devices:
      fi-skl-6700k2:      PASS -> INCOMPLETE (k.org#199541, fdo#105524, fdo#104108)
      fi-bxt-j4205:       PASS -> INCOMPLETE (fdo#103927)
      fi-ivb-3770:        PASS -> INCOMPLETE (fdo#106220)
      fi-skl-guc:         PASS -> INCOMPLETE (fdo#106693, fdo#104108)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       PASS -> INCOMPLETE (fdo#103713)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_workarounds:
      fi-bdw-5557u:       DMESG-FAIL (fdo#107292) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#104108 https://bugs.freedesktop.org/show_bug.cgi?id=104108
  fdo#105524 https://bugs.freedesktop.org/show_bug.cgi?id=105524
  fdo#106220 https://bugs.freedesktop.org/show_bug.cgi?id=106220
  fdo#106693 https://bugs.freedesktop.org/show_bug.cgi?id=106693
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  k.org#199541 https://bugzilla.kernel.org/show_bug.cgi?id=199541


== Participating hosts (52 -> 48) ==

  Additional (1): fi-glk-j4005 
  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4613 -> Patchwork_9848

  CI_DRM_4613: e3dd88c4ffdcda9f36bdb43cbdd7eaa605002055 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4587: 5d78c73d871525ec9caecd88ad7d9abe36637314 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9848: 3d56929672784c517c804405c6f4d6a9bab546a4 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

3d5692967278 drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9848/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [v2] drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-03 16:34 ` Gwan-gyeong Mun
@ 2018-08-06 12:09   ` Gwan-gyeong Mun
  -1 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-06 12:09 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Joonas Lahtinen, Rodrigo Vivi, David Airlie, intel-gfx,
	dri-devel, linux-kernel

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This
helper can detect changing of status of connector, but it can not detect changing
of edid. Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

v2: Add NULL check before comparing of EDIDs.

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 83 +++++++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..0bd3e1c38167 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,87 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected".
+		 */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+			if (!old_edid || !cur_edid)
+				continue;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid))) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +633,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [v2] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-06 12:09   ` Gwan-gyeong Mun
  0 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-06 12:09 UTC (permalink / raw)
  To: Jani Nikula
  Cc: David Airlie, intel-gfx, linux-kernel, dri-devel, Rodrigo Vivi

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This
helper can detect changing of status of connector, but it can not detect changing
of edid. Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

v2: Add NULL check before comparing of EDIDs.

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 83 +++++++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..0bd3e1c38167 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,87 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected".
+		 */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+			if (!old_edid || !cur_edid)
+				continue;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid))) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +633,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (3 preceding siblings ...)
  (?)
@ 2018-08-06 13:09 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-06 13:09 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
URL   : https://patchwork.freedesktop.org/series/47680/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
93959254664e drm/i915: Add detection of changing of edid on between suspend and resume
-:8: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#8: 
helper can detect changing of status of connector, but it can not detect changing

-:96: WARNING:LINE_SPACING: Missing a blank line after declarations
#96: FILE: drivers/gpu/drm/i915/intel_hotplug.c:571:
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+			if (!old_edid || !cur_edid)

total: 0 errors, 2 warnings, 0 checks, 95 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (4 preceding siblings ...)
  (?)
@ 2018-08-06 13:25 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-06 13:25 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4621 -> Patchwork_9858 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9858 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9858, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9858:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-byt-n2820:       PASS -> DMESG-WARN
      fi-bsw-n3050:       PASS -> DMESG-WARN

    igt@drv_selftest@live_sanitycheck:
      fi-bsw-n3050:       PASS -> INCOMPLETE

    igt@kms_frontbuffer_tracking@basic:
      {fi-bdw-samus}:     PASS -> DMESG-WARN

    
== Known issues ==

  Here are the changes found in Patchwork_9858 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_workarounds:
      fi-cnl-psr:         PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_flip@basic-flip-vs-dpms:
      fi-glk-j4005:       PASS -> DMESG-WARN (fdo#106000)

    
    ==== Possible fixes ====

    igt@debugfs_test@read_all_entries:
      fi-snb-2520m:       INCOMPLETE (fdo#103713) -> PASS

    igt@kms_chamelium@dp-crc-fast:
      fi-kbl-7500u:       FAIL (fdo#103841) -> PASS

    igt@kms_frontbuffer_tracking@basic:
      {fi-byt-clapper}:   FAIL (fdo#103167) -> PASS

    
    ==== Warnings ====

    {igt@kms_psr@primary_page_flip}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> DMESG-FAIL (fdo#107372)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#106000 https://bugs.freedesktop.org/show_bug.cgi?id=106000
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372


== Participating hosts (53 -> 48) ==

  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4621 -> Patchwork_9858

  CI_DRM_4621: b35c6b4ccdc1e9b386d5679282123099cf83adf1 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4587: 5d78c73d871525ec9caecd88ad7d9abe36637314 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9858: 93959254664e0bd624d38dc38857a31a0976324b @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

93959254664e drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9858/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (5 preceding siblings ...)
  (?)
@ 2018-08-09  8:20 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09  8:20 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4636 -> Patchwork_9898 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9898 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9898, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9898:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-bsw-n3050:       PASS -> DMESG-WARN

    
== Known issues ==

  Here are the changes found in Patchwork_9898 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_hangcheck:
      {fi-bdw-samus}:     PASS -> DMESG-FAIL (fdo#106560)
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL (fdo#106560)
      fi-cfl-s3:          PASS -> DMESG-FAIL (fdo#106560)
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)

    igt@drv_selftest@live_workarounds:
      {fi-bsw-kefka}:     PASS -> DMESG-FAIL (fdo#107292)
      fi-bsw-n3050:       PASS -> DMESG-FAIL (fdo#107292)
      fi-cnl-psr:         PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_frontbuffer_tracking@basic:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#103167)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      fi-bxt-dsi:         PASS -> INCOMPLETE (fdo#103927)
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    
    ==== Warnings ====

    {igt@kms_psr@primary_page_flip}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> DMESG-FAIL (fdo#107372)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399


== Participating hosts (50 -> 48) ==

  Additional (2): fi-kbl-7560u fi-icl-u 
  Missing    (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4636 -> Patchwork_9898

  CI_DRM_4636: 084bb2fb549650b6da80976c9bc594779ce342b4 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4590: e6ddaca7a8ea9d3d27f0ecaa36b357cc02e2df3b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9898: b98c413f43d6d64fca1133ee29441a73726cbed8 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

b98c413f43d6 drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9898/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (6 preceding siblings ...)
  (?)
@ 2018-08-09  9:04 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09  9:04 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev2)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4636 -> Patchwork_9899 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9899 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9899, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9899:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-bsw-n3050:       PASS -> DMESG-WARN

    igt@gem_exec_suspend@basic-s3:
      {fi-kbl-soraka}:    NOTRUN -> INCOMPLETE

    
== Known issues ==

  Here are the changes found in Patchwork_9899 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_module_reload@basic-reload-inject:
      fi-hsw-4770r:       PASS -> DMESG-WARN (fdo#107425)

    igt@drv_selftest@live_hangcheck:
      fi-kbl-7560u:       NOTRUN -> DMESG-FAIL (fdo#106947, fdo#106560)

    igt@drv_selftest@live_workarounds:
      fi-skl-6700hq:      PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#107362, fdo#103191)

    igt@prime_vgem@basic-fence-flip:
      fi-ilk-650:         PASS -> FAIL (fdo#104008)

    
    ==== Warnings ====

    {igt@kms_psr@primary_page_flip}:
      fi-cnl-psr:         DMESG-WARN (fdo#107372) -> DMESG-FAIL (fdo#107372)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
  fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372
  fdo#107425 https://bugs.freedesktop.org/show_bug.cgi?id=107425


== Participating hosts (50 -> 47) ==

  Additional (2): fi-kbl-soraka fi-kbl-7560u 
  Missing    (5): fi-skl-guc fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4636 -> Patchwork_9899

  CI_DRM_4636: 084bb2fb549650b6da80976c9bc594779ce342b4 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4590: e6ddaca7a8ea9d3d27f0ecaa36b357cc02e2df3b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9899: f7f78bf703682167942c440f7cc9cf19e86c95cd @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

f7f78bf70368 drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9899/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [v3] drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-03 16:34 ` Gwan-gyeong Mun
@ 2018-08-09 11:13   ` Gwan-gyeong Mun
  -1 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-09 11:13 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Joonas Lahtinen, Rodrigo Vivi, David Airlie, intel-gfx,
	dri-devel, linux-kernel

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This
helper can detect changing of status of connector, but it can not detect
changing of edid.

Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

v2: Add NULL check before comparing of EDIDs.

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 84 +++++++++++++++++++++++++++-
 1 file changed, 83 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..965f2d771fc0 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected".
+		 */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+
+			if (!old_edid || !cur_edid)
+				continue;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid))) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0


^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [v3] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-09 11:13   ` Gwan-gyeong Mun
  0 siblings, 0 replies; 20+ messages in thread
From: Gwan-gyeong Mun @ 2018-08-09 11:13 UTC (permalink / raw)
  To: Jani Nikula
  Cc: David Airlie, intel-gfx, linux-kernel, dri-devel, Rodrigo Vivi

The hotplug detection routine of i915 uses drm_helper_hpd_irq_event(). This
helper can detect changing of status of connector, but it can not detect
changing of edid.

Following scenario requires detection of changing of edid.

 1) plug display device to a connector
 2) system suspend
 3) unplug 1)'s display device and plug the other display device to a connector
 4) system resume

It adds edid check routine when a connector status still remains as "connector_status_connected".

v2: Add NULL check before comparing of EDIDs.

Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
Testcase: igt/kms_chamelium/dp-edid-change-during-suspend

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/intel_hotplug.c | 84 +++++++++++++++++++++++++++-
 1 file changed, 83 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 648a13c6043c..965f2d771fc0 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
 	}
 }
 
+/**
+ * intel_hpd_irq_event - hotplug processing
+ * @dev: drm_device
+ *
+ * Drivers can use this function to run a detect cycle on all connectors which
+ * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member. All other
+ * connectors are ignored, which is useful to avoid reprobing fixed panels.
+ *
+ * This function is useful for drivers which can't or don't track hotplug interrupts
+ * for each connector. This function is based on drm_helper_hpd_irq_event() helper
+ * function and besides it adds edid check routine when a connector status still
+ * remains as "connector_status_connected".
+ *
+ * Following scenario requires detection of changing of edid.
+ *  1) plug display device to a connector
+ *  2) system suspend
+ *  3) unplug 1)'s display device and plug the other display device to a connector
+ *  4) system resume
+
+ * This function must be called from process context with no mode
+ * setting locks held.
+ *
+ * Note that a connector can be both polled and probed from the hotplug handler,
+ * in case the hotplug interrupt is known to be unreliable.
+ */
+static bool intel_hpd_irq_event(struct drm_device *dev)
+{
+	struct drm_connector *connector;
+	struct drm_connector_list_iter conn_iter;
+	enum drm_connector_status old_status, cur_status;
+	struct edid *old_edid;
+	bool changed = false;
+
+	if (!dev->mode_config.poll_enabled)
+		return false;
+
+	mutex_lock(&dev->mode_config.mutex);
+	drm_connector_list_iter_begin(dev, &conn_iter);
+	drm_for_each_connector_iter(connector, &conn_iter) {
+		/* Only handle HPD capable connectors. */
+		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
+			continue;
+
+		old_status = connector->status;
+		old_edid = to_intel_connector(connector)->detect_edid;
+
+		cur_status = drm_helper_probe_detect(connector, NULL, false);
+		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(cur_status));
+
+		if (old_status != cur_status)
+			changed = true;
+
+		/* Check changing of edid when a connector status still remains
+		 * as "connector_status_connected".
+		 */
+		if (old_status == cur_status &&
+		    cur_status == connector_status_connected) {
+			struct edid *cur_edid = to_intel_connector(connector)->detect_edid;
+
+			if (!old_edid || !cur_edid)
+				continue;
+
+			if (memcmp(old_edid, cur_edid, sizeof(*cur_edid))) {
+				changed = true;
+				DRM_DEBUG_KMS("[CONNECTOR:%d:%s] edid updated\n",
+					      connector->base.id,
+					      connector->name);
+			}
+		}
+	}
+	drm_connector_list_iter_end(&conn_iter);
+	mutex_unlock(&dev->mode_config.mutex);
+
+	if (changed)
+		drm_kms_helper_hotplug_event(dev);
+
+	return changed;
+}
+
 static void i915_hpd_poll_init_work(struct work_struct *work)
 {
 	struct drm_i915_private *dev_priv =
@@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
 	 * in the middle of disabling polling
 	 */
 	if (!enabled)
-		drm_helper_hpd_irq_event(dev);
+		intel_hpd_irq_event(dev);
 }
 
 /**
-- 
2.18.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (8 preceding siblings ...)
  (?)
@ 2018-08-09 11:35 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09 11:35 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
URL   : https://patchwork.freedesktop.org/series/47680/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
8c821c599a13 drm/i915: Add detection of changing of edid on between suspend and resume
-:15: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#15: 
 3) unplug 1)'s display device and plug the other display device to a connector

total: 0 errors, 1 warnings, 0 checks, 96 lines checked

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (9 preceding siblings ...)
  (?)
@ 2018-08-09 11:53 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09 11:53 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4636 -> Patchwork_9905 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9905 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9905, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/3/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9905:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-byt-j1900:       PASS -> DMESG-WARN
      fi-byt-n2820:       PASS -> DMESG-WARN
      fi-bsw-n3050:       PASS -> DMESG-WARN

    igt@gem_exec_suspend@basic-s3:
      {fi-kbl-soraka}:    NOTRUN -> INCOMPLETE

    
== Known issues ==

  Here are the changes found in Patchwork_9905 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@debugfs_test@read_all_entries:
      fi-snb-2520m:       PASS -> INCOMPLETE (fdo#103713)

    igt@drv_selftest@live_hangcheck:
      fi-bdw-5557u:       PASS -> DMESG-FAIL (fdo#106560)
      {fi-icl-u}:         NOTRUN -> INCOMPLETE (fdo#107399)

    igt@kms_chamelium@dp-crc-fast:
      fi-kbl-7500u:       PASS -> DMESG-FAIL (fdo#103841)

    igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#107362)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      {fi-icl-u}:         NOTRUN -> DMESG-WARN (fdo#107382) +4

    {igt@kms_psr@primary_page_flip}:
      {fi-icl-u}:         NOTRUN -> FAIL (fdo#107383) +3

    igt@prime_vgem@basic-fence-flip:
      fi-ilk-650:         PASS -> FAIL (fdo#104008)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#107382 https://bugs.freedesktop.org/show_bug.cgi?id=107382
  fdo#107383 https://bugs.freedesktop.org/show_bug.cgi?id=107383
  fdo#107399 https://bugs.freedesktop.org/show_bug.cgi?id=107399


== Participating hosts (50 -> 49) ==

  Additional (3): fi-kbl-soraka fi-kbl-7560u fi-icl-u 
  Missing    (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4636 -> Patchwork_9905

  CI_DRM_4636: 084bb2fb549650b6da80976c9bc594779ce342b4 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4590: e6ddaca7a8ea9d3d27f0ecaa36b357cc02e2df3b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9905: 8c821c599a136252fef8db116c813167dcaa4df4 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

8c821c599a13 drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9905/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (10 preceding siblings ...)
  (?)
@ 2018-08-09 13:33 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09 13:33 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4637 -> Patchwork_9907 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9907 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9907, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/3/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9907:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-bsw-n3050:       PASS -> DMESG-WARN

    
== Known issues ==

  Here are the changes found in Patchwork_9907 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_hangcheck:
      fi-bxt-dsi:         PASS -> DMESG-FAIL (fdo#106560)

    igt@drv_selftest@live_workarounds:
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_pipe_crc_basic@read-crc-pipe-a:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#107362)

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       NOTRUN -> INCOMPLETE (fdo#103713)

    
    ==== Possible fixes ====

    igt@debugfs_test@read_all_entries:
      {fi-icl-u}:         DMESG-FAIL (fdo#107411) -> PASS
      fi-snb-2520m:       INCOMPLETE (fdo#103713) -> PASS

    igt@drv_selftest@live_hangcheck:
      fi-cnl-psr:         DMESG-FAIL (fdo#106560) -> PASS

    igt@gem_exec_reloc@basic-gtt-read-noreloc:
      {fi-icl-u}:         DMESG-WARN (fdo#107411) -> PASS +77

    igt@kms_frontbuffer_tracking@basic:
      {fi-byt-clapper}:   FAIL (fdo#103167) -> PASS

    igt@prime_vgem@basic-fence-flip:
      fi-ilk-650:         FAIL (fdo#104008) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#107411 https://bugs.freedesktop.org/show_bug.cgi?id=107411


== Participating hosts (54 -> 48) ==

  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-gdg-551 


== Build changes ==

    * Linux: CI_DRM_4637 -> Patchwork_9907

  CI_DRM_4637: 93f9ad1bdd8f66a09f39968d21f1a1de7a69bf54 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4591: 6cb3d7dbe5831a7b2b5b7a4638d8a8b7ac624f5f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9907: 69bed2bf41dd52cdc6f939c9d19e9eb5db82cff6 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

69bed2bf41dd drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9907/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* ✗ Fi.CI.BAT: failure for drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
  2018-08-03 16:34 ` Gwan-gyeong Mun
                   ` (11 preceding siblings ...)
  (?)
@ 2018-08-09 15:02 ` Patchwork
  -1 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2018-08-09 15:02 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Add detection of changing of edid on between suspend and resume (rev3)
URL   : https://patchwork.freedesktop.org/series/47680/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4639 -> Patchwork_9909 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9909 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9909, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/47680/revisions/3/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9909:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_module_reload@basic-reload-inject:
      fi-byt-j1900:       PASS -> DMESG-WARN
      fi-bsw-n3050:       PASS -> DMESG-WARN

    
== Known issues ==

  Here are the changes found in Patchwork_9909 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@debugfs_test@read_all_entries:
      fi-snb-2520m:       PASS -> INCOMPLETE (fdo#103713)

    igt@drv_selftest@live_coherency:
      fi-gdg-551:         NOTRUN -> DMESG-FAIL (fdo#107164)

    igt@drv_selftest@live_requests:
      {fi-bsw-kefka}:     PASS -> INCOMPLETE (fdo#105876)

    igt@drv_selftest@live_workarounds:
      fi-whl-u:           PASS -> DMESG-FAIL (fdo#107292)

    igt@kms_frontbuffer_tracking@basic:
      {fi-byt-clapper}:   PASS -> FAIL (fdo#103167)

    {igt@kms_psr@primary_mmap_gtt}:
      fi-cnl-psr:         PASS -> DMESG-WARN (fdo#107372)

    
    ==== Possible fixes ====

    {igt@amdgpu/amd_prime@amd-to-i915}:
      fi-bxt-j4205:       INCOMPLETE (fdo#103927) -> SKIP

    {igt@amdgpu/amd_prime@i915-to-amd}:
      fi-bxt-j4205:       DMESG-FAIL -> SKIP

    igt@kms_pipe_crc_basic@read-crc-pipe-a:
      {fi-byt-clapper}:   FAIL (fdo#107362) -> PASS

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
      fi-bxt-dsi:         INCOMPLETE (fdo#103927) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#105876 https://bugs.freedesktop.org/show_bug.cgi?id=105876
  fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164
  fdo#107292 https://bugs.freedesktop.org/show_bug.cgi?id=107292
  fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
  fdo#107372 https://bugs.freedesktop.org/show_bug.cgi?id=107372


== Participating hosts (53 -> 49) ==

  Additional (1): fi-gdg-551 
  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4639 -> Patchwork_9909

  CI_DRM_4639: da34c4841d4bd5098cef0bd3ddaeed1ee3eb3103 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4591: 6cb3d7dbe5831a7b2b5b7a4638d8a8b7ac624f5f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9909: b5655d96db430792733958ab2a84e12a85f3584d @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

b5655d96db43 drm/i915: Add detection of changing of edid on between suspend and resume

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9909/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [v3] drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-09 11:13   ` Gwan-gyeong Mun
@ 2018-08-10 13:02     ` Lisovskiy, Stanislav
  -1 siblings, 0 replies; 20+ messages in thread
From: Lisovskiy, Stanislav @ 2018-08-10 13:02 UTC (permalink / raw)
  To: Mun, Gwan-gyeong, jani.nikula
  Cc: dri-devel, intel-gfx, linux-kernel, Vivi, Rodrigo, airlied

On Thu, 2018-08-09 at 14:13 +0300, Gwan-gyeong Mun wrote:
> The hotplug detection routine of i915 uses
> drm_helper_hpd_irq_event(). This
> helper can detect changing of status of connector, but it can not
> detect
> changing of edid.
> 
> Following scenario requires detection of changing of edid.
> 
>  1) plug display device to a connector
>  2) system suspend
>  3) unplug 1)'s display device and plug the other display device to a
> connector
>  4) system resume
> 
> It adds edid check routine when a connector status still remains as
> "connector_status_connected".
> 
> v2: Add NULL check before comparing of EDIDs.
> 
> Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
> Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
> Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
> Testcase: igt/kms_chamelium/dp-edid-change-during-suspend
> 
> Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hotplug.c | 84
> +++++++++++++++++++++++++++-
>  1 file changed, 83 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c
> b/drivers/gpu/drm/i915/intel_hotplug.c
> index 648a13c6043c..965f2d771fc0 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private
> *dev_priv)
>  	}
>  }
>  
> +/**
> + * intel_hpd_irq_event - hotplug processing
> + * @dev: drm_device
> + *
> + * Drivers can use this function to run a detect cycle on all
> connectors which
> + * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member.
> All other
> + * connectors are ignored, which is useful to avoid reprobing fixed
> panels.
> + *
> + * This function is useful for drivers which can't or don't track
> hotplug interrupts
> + * for each connector. This function is based on
> drm_helper_hpd_irq_event() helper
> + * function and besides it adds edid check routine when a connector
> status still
> + * remains as "connector_status_connected".
> + *
> + * Following scenario requires detection of changing of edid.
> + *  1) plug display device to a connector
> + *  2) system suspend
> + *  3) unplug 1)'s display device and plug the other display device
> to a connector
> + *  4) system resume
> +
> + * This function must be called from process context with no mode
> + * setting locks held.
> + *
> + * Note that a connector can be both polled and probed from the
> hotplug handler,
> + * in case the hotplug interrupt is known to be unreliable.
> + */
> +static bool intel_hpd_irq_event(struct drm_device *dev)
> +{
> +	struct drm_connector *connector;
> +	struct drm_connector_list_iter conn_iter;
> +	enum drm_connector_status old_status, cur_status;
> +	struct edid *old_edid;
> +	bool changed = false;
> +
> +	if (!dev->mode_config.poll_enabled)
> +		return false;
> +
> +	mutex_lock(&dev->mode_config.mutex);
> +	drm_connector_list_iter_begin(dev, &conn_iter);
> +	drm_for_each_connector_iter(connector, &conn_iter) {
> +		/* Only handle HPD capable connectors. */
> +		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
> +			continue;
> +
> +		old_status = connector->status;
> +		old_edid = to_intel_connector(connector)-
> >detect_edid;
> +
> +		cur_status = drm_helper_probe_detect(connector,
> NULL, false);
> +		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from
> %s to %s\n",
> +			      connector->base.id, connector->name,
> +			      drm_get_connector_status_name(old_stat
> us),
> +			      drm_get_connector_status_name(cur_stat
> us));
> +
> +		if (old_status != cur_status)
> +			changed = true;
> +
> +		/* Check changing of edid when a connector status
> still remains
> +		 * as "connector_status_connected".
> +		 */
> +		if (old_status == cur_status &&
> +		    cur_status == connector_status_connected) {
> +			struct edid *cur_edid =
> to_intel_connector(connector)->detect_edid;
> +
> +			if (!old_edid || !cur_edid)
> +				continue;
> +
> +			if (memcmp(old_edid, cur_edid,
> sizeof(*cur_edid))) {
> +				changed = true;
> +				DRM_DEBUG_KMS("[CONNECTOR:%d:%s]
> edid updated\n",
> +					      connector->base.id,
> +					      connector->name);
> +			}
> +		}
> +	}
> +	drm_connector_list_iter_end(&conn_iter);
> +	mutex_unlock(&dev->mode_config.mutex);
> +
> +	if (changed)
> +		drm_kms_helper_hotplug_event(dev);
> +
> +	return changed;
> +}
> +
>  static void i915_hpd_poll_init_work(struct work_struct *work)
>  {
>  	struct drm_i915_private *dev_priv =
> @@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct
> work_struct *work)
>  	 * in the middle of disabling polling
>  	 */
>  	if (!enabled)
> -		drm_helper_hpd_irq_event(dev);
> +		intel_hpd_irq_event(dev);
>  }

Just wondering, as I saw previously drm_helper_hpd_irq_event function
was used, which basically does the same thing, except doing memcmp
for detecting the edid change. Is it only Intel specific change? As we
could just add this modification to existing helper function or add
another helper function to the drm (drm_probe_helper.c), so that it is
also usable elsewhere..

>  
>  /**
-- 
Best Regards,

Lisovskiy Stanislav

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [v3] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-10 13:02     ` Lisovskiy, Stanislav
  0 siblings, 0 replies; 20+ messages in thread
From: Lisovskiy, Stanislav @ 2018-08-10 13:02 UTC (permalink / raw)
  To: Mun, Gwan-gyeong, jani.nikula
  Cc: airlied, intel-gfx, linux-kernel, dri-devel, Vivi, Rodrigo

On Thu, 2018-08-09 at 14:13 +0300, Gwan-gyeong Mun wrote:
> The hotplug detection routine of i915 uses
> drm_helper_hpd_irq_event(). This
> helper can detect changing of status of connector, but it can not
> detect
> changing of edid.
> 
> Following scenario requires detection of changing of edid.
> 
>  1) plug display device to a connector
>  2) system suspend
>  3) unplug 1)'s display device and plug the other display device to a
> connector
>  4) system resume
> 
> It adds edid check routine when a connector status still remains as
> "connector_status_connected".
> 
> v2: Add NULL check before comparing of EDIDs.
> 
> Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
> Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
> Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
> Testcase: igt/kms_chamelium/dp-edid-change-during-suspend
> 
> Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hotplug.c | 84
> +++++++++++++++++++++++++++-
>  1 file changed, 83 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c
> b/drivers/gpu/drm/i915/intel_hotplug.c
> index 648a13c6043c..965f2d771fc0 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private
> *dev_priv)
>  	}
>  }
>  
> +/**
> + * intel_hpd_irq_event - hotplug processing
> + * @dev: drm_device
> + *
> + * Drivers can use this function to run a detect cycle on all
> connectors which
> + * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled member.
> All other
> + * connectors are ignored, which is useful to avoid reprobing fixed
> panels.
> + *
> + * This function is useful for drivers which can't or don't track
> hotplug interrupts
> + * for each connector. This function is based on
> drm_helper_hpd_irq_event() helper
> + * function and besides it adds edid check routine when a connector
> status still
> + * remains as "connector_status_connected".
> + *
> + * Following scenario requires detection of changing of edid.
> + *  1) plug display device to a connector
> + *  2) system suspend
> + *  3) unplug 1)'s display device and plug the other display device
> to a connector
> + *  4) system resume
> +
> + * This function must be called from process context with no mode
> + * setting locks held.
> + *
> + * Note that a connector can be both polled and probed from the
> hotplug handler,
> + * in case the hotplug interrupt is known to be unreliable.
> + */
> +static bool intel_hpd_irq_event(struct drm_device *dev)
> +{
> +	struct drm_connector *connector;
> +	struct drm_connector_list_iter conn_iter;
> +	enum drm_connector_status old_status, cur_status;
> +	struct edid *old_edid;
> +	bool changed = false;
> +
> +	if (!dev->mode_config.poll_enabled)
> +		return false;
> +
> +	mutex_lock(&dev->mode_config.mutex);
> +	drm_connector_list_iter_begin(dev, &conn_iter);
> +	drm_for_each_connector_iter(connector, &conn_iter) {
> +		/* Only handle HPD capable connectors. */
> +		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
> +			continue;
> +
> +		old_status = connector->status;
> +		old_edid = to_intel_connector(connector)-
> >detect_edid;
> +
> +		cur_status = drm_helper_probe_detect(connector,
> NULL, false);
> +		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from
> %s to %s\n",
> +			      connector->base.id, connector->name,
> +			      drm_get_connector_status_name(old_stat
> us),
> +			      drm_get_connector_status_name(cur_stat
> us));
> +
> +		if (old_status != cur_status)
> +			changed = true;
> +
> +		/* Check changing of edid when a connector status
> still remains
> +		 * as "connector_status_connected".
> +		 */
> +		if (old_status == cur_status &&
> +		    cur_status == connector_status_connected) {
> +			struct edid *cur_edid =
> to_intel_connector(connector)->detect_edid;
> +
> +			if (!old_edid || !cur_edid)
> +				continue;
> +
> +			if (memcmp(old_edid, cur_edid,
> sizeof(*cur_edid))) {
> +				changed = true;
> +				DRM_DEBUG_KMS("[CONNECTOR:%d:%s]
> edid updated\n",
> +					      connector->base.id,
> +					      connector->name);
> +			}
> +		}
> +	}
> +	drm_connector_list_iter_end(&conn_iter);
> +	mutex_unlock(&dev->mode_config.mutex);
> +
> +	if (changed)
> +		drm_kms_helper_hotplug_event(dev);
> +
> +	return changed;
> +}
> +
>  static void i915_hpd_poll_init_work(struct work_struct *work)
>  {
>  	struct drm_i915_private *dev_priv =
> @@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct
> work_struct *work)
>  	 * in the middle of disabling polling
>  	 */
>  	if (!enabled)
> -		drm_helper_hpd_irq_event(dev);
> +		intel_hpd_irq_event(dev);
>  }

Just wondering, as I saw previously drm_helper_hpd_irq_event function
was used, which basically does the same thing, except doing memcmp
for detecting the edid change. Is it only Intel specific change? As we
could just add this modification to existing helper function or add
another helper function to the drm (drm_probe_helper.c), so that it is
also usable elsewhere..

>  
>  /**
-- 
Best Regards,

Lisovskiy Stanislav
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Intel-gfx] [v3] drm/i915: Add detection of changing of edid on between suspend and resume
  2018-08-10 13:02     ` Lisovskiy, Stanislav
@ 2018-08-13 10:55       ` Mika Kahola
  -1 siblings, 0 replies; 20+ messages in thread
From: Mika Kahola @ 2018-08-13 10:55 UTC (permalink / raw)
  To: Lisovskiy, Stanislav, Mun, Gwan-gyeong, jani.nikula
  Cc: airlied, intel-gfx, linux-kernel, dri-devel, Vivi, Rodrigo

On Fri, 2018-08-10 at 13:02 +0000, Lisovskiy, Stanislav wrote:
> On Thu, 2018-08-09 at 14:13 +0300, Gwan-gyeong Mun wrote:
> > 
> > The hotplug detection routine of i915 uses
> > drm_helper_hpd_irq_event(). This
> > helper can detect changing of status of connector, but it can not
> > detect
> > changing of edid.
> > 
> > Following scenario requires detection of changing of edid.
> > 
> >  1) plug display device to a connector
> >  2) system suspend
> >  3) unplug 1)'s display device and plug the other display device to
> > a
> > connector
> >  4) system resume
> > 
> > It adds edid check routine when a connector status still remains as
> > "connector_status_connected".
> > 
> > v2: Add NULL check before comparing of EDIDs.
> > 
> > Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
> > Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
> > Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
> > Testcase: igt/kms_chamelium/dp-edid-change-during-suspend
> > 
> > Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_hotplug.c | 84
> > +++++++++++++++++++++++++++-
> >  1 file changed, 83 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c
> > b/drivers/gpu/drm/i915/intel_hotplug.c
> > index 648a13c6043c..965f2d771fc0 100644
> > --- a/drivers/gpu/drm/i915/intel_hotplug.c
> > +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> > @@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private
> > *dev_priv)
> >  	}
> >  }
> >  
> > +/**
> > + * intel_hpd_irq_event - hotplug processing
> > + * @dev: drm_device
> > + *
> > + * Drivers can use this function to run a detect cycle on all
> > connectors which
> > + * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled
> > member.
> > All other
> > + * connectors are ignored, which is useful to avoid reprobing
> > fixed
> > panels.
> > + *
> > + * This function is useful for drivers which can't or don't track
> > hotplug interrupts
> > + * for each connector. This function is based on
> > drm_helper_hpd_irq_event() helper
> > + * function and besides it adds edid check routine when a
> > connector
> > status still
> > + * remains as "connector_status_connected".
> > + *
> > + * Following scenario requires detection of changing of edid.
> > + *  1) plug display device to a connector
> > + *  2) system suspend
> > + *  3) unplug 1)'s display device and plug the other display
> > device
> > to a connector
> > + *  4) system resume
> > +
> > + * This function must be called from process context with no mode
> > + * setting locks held.
> > + *
> > + * Note that a connector can be both polled and probed from the
> > hotplug handler,
> > + * in case the hotplug interrupt is known to be unreliable.
> > + */
> > +static bool intel_hpd_irq_event(struct drm_device *dev)
> > +{
> > +	struct drm_connector *connector;
> > +	struct drm_connector_list_iter conn_iter;
> > +	enum drm_connector_status old_status, cur_status;
> > +	struct edid *old_edid;
> > +	bool changed = false;
> > +
> > +	if (!dev->mode_config.poll_enabled)
> > +		return false;
> > +
> > +	mutex_lock(&dev->mode_config.mutex);
> > +	drm_connector_list_iter_begin(dev, &conn_iter);
> > +	drm_for_each_connector_iter(connector, &conn_iter) {
> > +		/* Only handle HPD capable connectors. */
> > +		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
> > +			continue;
> > +
> > +		old_status = connector->status;
> > +		old_edid = to_intel_connector(connector)-
> > > 
> > > detect_edid;
> > +
> > +		cur_status = drm_helper_probe_detect(connector,
> > NULL, false);
> > +		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated
> > from
> > %s to %s\n",
> > +			      connector->base.id, connector->name,
> > +			      drm_get_connector_status_name(old_st
> > at
> > us),
> > +			      drm_get_connector_status_name(cur_st
> > at
> > us));
> > +
> > +		if (old_status != cur_status)
> > +			changed = true;
> > +
> > +		/* Check changing of edid when a connector status
> > still remains
> > +		 * as "connector_status_connected".
> > +		 */
> > +		if (old_status == cur_status &&
> > +		    cur_status == connector_status_connected) {
> > +			struct edid *cur_edid =
> > to_intel_connector(connector)->detect_edid;
> > +
> > +			if (!old_edid || !cur_edid)
> > +				continue;
> > +
> > +			if (memcmp(old_edid, cur_edid,
> > sizeof(*cur_edid))) {
> > +				changed = true;
> > +				DRM_DEBUG_KMS("[CONNECTOR:%d:%s]
> > edid updated\n",
> > +					      connector->base.id,
> > +					      connector->name);
> > +			}
> > +		}
> > +	}
> > +	drm_connector_list_iter_end(&conn_iter);
> > +	mutex_unlock(&dev->mode_config.mutex);
> > +
> > +	if (changed)
> > +		drm_kms_helper_hotplug_event(dev);
> > +
> > +	return changed;
> > +}
> > +
> >  static void i915_hpd_poll_init_work(struct work_struct *work)
> >  {
> >  	struct drm_i915_private *dev_priv =
> > @@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct
> > work_struct *work)
> >  	 * in the middle of disabling polling
> >  	 */
> >  	if (!enabled)
> > -		drm_helper_hpd_irq_event(dev);
> > +		intel_hpd_irq_event(dev);
> >  }
> Just wondering, as I saw previously drm_helper_hpd_irq_event function
> was used, which basically does the same thing, except doing memcmp
> for detecting the edid change. Is it only Intel specific change? As
> we
> could just add this modification to existing helper function or add
> another helper function to the drm (drm_probe_helper.c), so that it
> is
> also usable elsewhere..
I second Stanislav's proposal to add this feature as part of drm. This
edid check could be part of existing drm_helper_hpd_irq_event()
function. Other drivers might find this change useful.

> 
> > 
> >  
> >  /**
> -- 
> Best Regards,
> 
> Lisovskiy Stanislav
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
-- 
Mika Kahola - Intel OTC


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [v3] drm/i915: Add detection of changing of edid on between suspend and resume
@ 2018-08-13 10:55       ` Mika Kahola
  0 siblings, 0 replies; 20+ messages in thread
From: Mika Kahola @ 2018-08-13 10:55 UTC (permalink / raw)
  To: Lisovskiy, Stanislav, Mun, Gwan-gyeong, jani.nikula
  Cc: airlied, intel-gfx, linux-kernel, dri-devel, Vivi, Rodrigo

On Fri, 2018-08-10 at 13:02 +0000, Lisovskiy, Stanislav wrote:
> On Thu, 2018-08-09 at 14:13 +0300, Gwan-gyeong Mun wrote:
> > 
> > The hotplug detection routine of i915 uses
> > drm_helper_hpd_irq_event(). This
> > helper can detect changing of status of connector, but it can not
> > detect
> > changing of edid.
> > 
> > Following scenario requires detection of changing of edid.
> > 
> >  1) plug display device to a connector
> >  2) system suspend
> >  3) unplug 1)'s display device and plug the other display device to
> > a
> > connector
> >  4) system resume
> > 
> > It adds edid check routine when a connector status still remains as
> > "connector_status_connected".
> > 
> > v2: Add NULL check before comparing of EDIDs.
> > 
> > Testcase: igt/kms_chamelium/hdmi-edid-change-during-hibernate
> > Testcase: igt/kms_chamelium/hdmi-edid-change-during-suspend
> > Testcase: igt/kms_chamelium/dp-edid-change-during-hibernate
> > Testcase: igt/kms_chamelium/dp-edid-change-during-suspend
> > 
> > Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_hotplug.c | 84
> > +++++++++++++++++++++++++++-
> >  1 file changed, 83 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c
> > b/drivers/gpu/drm/i915/intel_hotplug.c
> > index 648a13c6043c..965f2d771fc0 100644
> > --- a/drivers/gpu/drm/i915/intel_hotplug.c
> > +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> > @@ -507,6 +507,88 @@ void intel_hpd_init(struct drm_i915_private
> > *dev_priv)
> >  	}
> >  }
> >  
> > +/**
> > + * intel_hpd_irq_event - hotplug processing
> > + * @dev: drm_device
> > + *
> > + * Drivers can use this function to run a detect cycle on all
> > connectors which
> > + * have the DRM_CONNECTOR_POLL_HPD flag set in their &polled
> > member.
> > All other
> > + * connectors are ignored, which is useful to avoid reprobing
> > fixed
> > panels.
> > + *
> > + * This function is useful for drivers which can't or don't track
> > hotplug interrupts
> > + * for each connector. This function is based on
> > drm_helper_hpd_irq_event() helper
> > + * function and besides it adds edid check routine when a
> > connector
> > status still
> > + * remains as "connector_status_connected".
> > + *
> > + * Following scenario requires detection of changing of edid.
> > + *  1) plug display device to a connector
> > + *  2) system suspend
> > + *  3) unplug 1)'s display device and plug the other display
> > device
> > to a connector
> > + *  4) system resume
> > +
> > + * This function must be called from process context with no mode
> > + * setting locks held.
> > + *
> > + * Note that a connector can be both polled and probed from the
> > hotplug handler,
> > + * in case the hotplug interrupt is known to be unreliable.
> > + */
> > +static bool intel_hpd_irq_event(struct drm_device *dev)
> > +{
> > +	struct drm_connector *connector;
> > +	struct drm_connector_list_iter conn_iter;
> > +	enum drm_connector_status old_status, cur_status;
> > +	struct edid *old_edid;
> > +	bool changed = false;
> > +
> > +	if (!dev->mode_config.poll_enabled)
> > +		return false;
> > +
> > +	mutex_lock(&dev->mode_config.mutex);
> > +	drm_connector_list_iter_begin(dev, &conn_iter);
> > +	drm_for_each_connector_iter(connector, &conn_iter) {
> > +		/* Only handle HPD capable connectors. */
> > +		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
> > +			continue;
> > +
> > +		old_status = connector->status;
> > +		old_edid = to_intel_connector(connector)-
> > > 
> > > detect_edid;
> > +
> > +		cur_status = drm_helper_probe_detect(connector,
> > NULL, false);
> > +		DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated
> > from
> > %s to %s\n",
> > +			      connector->base.id, connector->name,
> > +			      drm_get_connector_status_name(old_st
> > at
> > us),
> > +			      drm_get_connector_status_name(cur_st
> > at
> > us));
> > +
> > +		if (old_status != cur_status)
> > +			changed = true;
> > +
> > +		/* Check changing of edid when a connector status
> > still remains
> > +		 * as "connector_status_connected".
> > +		 */
> > +		if (old_status == cur_status &&
> > +		    cur_status == connector_status_connected) {
> > +			struct edid *cur_edid =
> > to_intel_connector(connector)->detect_edid;
> > +
> > +			if (!old_edid || !cur_edid)
> > +				continue;
> > +
> > +			if (memcmp(old_edid, cur_edid,
> > sizeof(*cur_edid))) {
> > +				changed = true;
> > +				DRM_DEBUG_KMS("[CONNECTOR:%d:%s]
> > edid updated\n",
> > +					      connector->base.id,
> > +					      connector->name);
> > +			}
> > +		}
> > +	}
> > +	drm_connector_list_iter_end(&conn_iter);
> > +	mutex_unlock(&dev->mode_config.mutex);
> > +
> > +	if (changed)
> > +		drm_kms_helper_hotplug_event(dev);
> > +
> > +	return changed;
> > +}
> > +
> >  static void i915_hpd_poll_init_work(struct work_struct *work)
> >  {
> >  	struct drm_i915_private *dev_priv =
> > @@ -552,7 +634,7 @@ static void i915_hpd_poll_init_work(struct
> > work_struct *work)
> >  	 * in the middle of disabling polling
> >  	 */
> >  	if (!enabled)
> > -		drm_helper_hpd_irq_event(dev);
> > +		intel_hpd_irq_event(dev);
> >  }
> Just wondering, as I saw previously drm_helper_hpd_irq_event function
> was used, which basically does the same thing, except doing memcmp
> for detecting the edid change. Is it only Intel specific change? As
> we
> could just add this modification to existing helper function or add
> another helper function to the drm (drm_probe_helper.c), so that it
> is
> also usable elsewhere..
I second Stanislav's proposal to add this feature as part of drm. This
edid check could be part of existing drm_helper_hpd_irq_event()
function. Other drivers might find this change useful.

> 
> > 
> >  
> >  /**
> -- 
> Best Regards,
> 
> Lisovskiy Stanislav
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
-- 
Mika Kahola - Intel OTC

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-08-13 10:55 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-03 16:34 [PATCH] drm/i915: Add detection of changing of edid on between suspend and resume Gwan-gyeong Mun
2018-08-03 16:34 ` Gwan-gyeong Mun
2018-08-03 16:56 ` ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2018-08-03 17:11 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-08-06 12:09 ` [v2] " Gwan-gyeong Mun
2018-08-06 12:09   ` Gwan-gyeong Mun
2018-08-06 13:09 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Add detection of changing of edid on between suspend and resume (rev2) Patchwork
2018-08-06 13:25 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-08-09  8:20 ` Patchwork
2018-08-09  9:04 ` Patchwork
2018-08-09 11:13 ` [v3] drm/i915: Add detection of changing of edid on between suspend and resume Gwan-gyeong Mun
2018-08-09 11:13   ` Gwan-gyeong Mun
2018-08-10 13:02   ` [Intel-gfx] " Lisovskiy, Stanislav
2018-08-10 13:02     ` Lisovskiy, Stanislav
2018-08-13 10:55     ` [Intel-gfx] " Mika Kahola
2018-08-13 10:55       ` Mika Kahola
2018-08-09 11:35 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Add detection of changing of edid on between suspend and resume (rev3) Patchwork
2018-08-09 11:53 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-08-09 13:33 ` Patchwork
2018-08-09 15:02 ` Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.