All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset
@ 2020-05-11 18:25 Imre Deak
  2020-05-11 19:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Imre Deak @ 2020-05-11 18:25 UTC (permalink / raw)
  To: igt-dev

At least an IIyama and LG monitor have a strange behaviour when waking
from a power saving state and getting enabled with an otherwise
successful modeset: after the modeset in ~2 sec they signal a bad link
state, either due to a lost CR/EQ in case of DP or a lost
scrambling/TMDS clock setting in case of HDMI link. In response the
driver resets the link with either a link-retraining or a modeset, which
in turn makes the test miss vblank/flip events and fail.

Work around the above issue, by retrying the test once if the test
detects after a failure that a link reset happened during the test and a
corresponding hotplug uevent was sent by the driver.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 tests/kms_flip.c | 113 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 82 insertions(+), 31 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 5e3e196c0..84cfdd363 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -482,7 +482,7 @@ static void vblank_handler(int fd, unsigned int frame, unsigned int sec,
 	fixup_premature_vblank_ts(o, &o->vblank_state);
 }
 
-static void check_state(const struct test_output *o, const struct event_state *es)
+static bool check_state(const struct test_output *o, const struct event_state *es)
 {
 	struct timeval diff;
 
@@ -496,7 +496,7 @@ static void check_state(const struct test_output *o, const struct event_state *e
 	}
 
 	if (es->count == 0)
-		return;
+		return true;
 
 	timersub(&es->current_ts, &es->last_received_ts, &diff);
 	igt_assert_f(timercmp(&es->last_received_ts, &es->current_ts, <),
@@ -507,10 +507,12 @@ static void check_state(const struct test_output *o, const struct event_state *e
 	/* check only valid if no modeset happens in between, that increments by
 	 * (1 << 23) on each step. This bounding matches the one in
 	 * DRM_IOCTL_WAIT_VBLANK. */
-	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)))
-		igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <= 1UL << 23,
-			     "unexpected %s seq %u, should be >= %u\n",
-			     es->name, es->current_seq, es->last_seq + o->seq_step);
+	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)) &&
+	    es->current_seq - (es->last_seq + o->seq_step) > 1UL << 23) {
+		igt_debug("unexpected %s seq %u, should be >= %u\n",
+			  es->name, es->current_seq, es->last_seq + o->seq_step);
+		return false;
+	}
 
 	if (o->flags & TEST_CHECK_TS) {
 		double elapsed, expected;
@@ -525,17 +527,25 @@ static void check_state(const struct test_output *o, const struct event_state *e
 			  elapsed, expected, expected * 0.005,
 			  fabs((elapsed - expected) / expected) * 100);
 
-		igt_assert_f(fabs((elapsed - expected) / expected) <= 0.005,
-			     "inconsistent %s ts/seq: last %.06f/%u, current %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
-			     es->name, timeval_float(&es->last_ts), es->last_seq,
-			     timeval_float(&es->current_ts), es->current_seq,
-			     elapsed, expected);
+		if (fabs((elapsed - expected) / expected) > 0.005) {
+			igt_debug("inconsistent %s ts/seq: last %.06f/%u, current %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
+				  es->name, timeval_float(&es->last_ts), es->last_seq,
+				  timeval_float(&es->current_ts), es->current_seq,
+				  elapsed, expected);
 
-		igt_assert_f(es->current_seq == es->last_seq + o->seq_step,
-			     "unexpected %s seq %u, expected %u\n",
-			     es->name, es->current_seq,
-			     es->last_seq + o->seq_step);
+			return false;
+		}
+
+		if (es->current_seq != es->last_seq + o->seq_step) {
+			igt_debug("unexpected %s seq %u, expected %u\n",
+				  es->name, es->current_seq,
+				  es->last_seq + o->seq_step);
+
+			return false;
+		}
 	}
+
+	return true;
 }
 
 static void check_state_correlation(struct test_output *o,
@@ -562,7 +572,7 @@ static void check_state_correlation(struct test_output *o,
 		     es1->name, es2->name, usec_diff / USEC_PER_SEC);
 }
 
-static void check_all_state(struct test_output *o,
+static bool check_all_state(struct test_output *o,
 			    unsigned int completed_events)
 {
 	bool flip, vblank;
@@ -570,14 +580,17 @@ static void check_all_state(struct test_output *o,
 	flip = completed_events & EVENT_FLIP;
 	vblank = completed_events & EVENT_VBLANK;
 
-	if (flip)
-		check_state(o, &o->flip_state);
-	if (vblank)
-		check_state(o, &o->vblank_state);
+	if (flip && !check_state(o, &o->flip_state))
+		return false;
+
+	if (vblank && !check_state(o, &o->vblank_state))
+		return false;
 
 	/* FIXME: Correlation check is broken. */
 	if (flip && vblank && 0)
 		check_state_correlation(o, &o->flip_state, &o->vblank_state);
+
+	return true;
 }
 
 static void recreate_fb(struct test_output *o)
@@ -982,7 +995,7 @@ static bool fb_is_bound(struct test_output *o, int fb)
 	return true;
 }
 
-static void check_final_state(const struct test_output *o,
+static bool check_final_state(const struct test_output *o,
 			      const struct event_state *es,
 			      unsigned int elapsed)
 {
@@ -999,11 +1012,16 @@ static void check_final_state(const struct test_output *o,
 		igt_debug("expected %d, counted %d, encoder type %d\n",
 			  (int)(elapsed / actual_frame_time(o)), count,
 			  o->kencoder[0]->encoder_type);
-		igt_assert_f(elapsed >= min && elapsed <= max,
-			     "dropped frames, expected %d, counted %d, encoder type %d\n",
-			     (int)(elapsed / actual_frame_time(o)), count,
-			     o->kencoder[0]->encoder_type);
+		if (elapsed < min || elapsed > max) {
+			igt_debug("dropped frames, expected %d, counted %d, encoder type %d\n",
+				  (int)(elapsed / actual_frame_time(o)), count,
+				  o->kencoder[0]->encoder_type);
+
+			return false;
+		}
 	}
+
+	return true;
 }
 
 /*
@@ -1050,7 +1068,8 @@ static unsigned int wait_for_events(struct test_output *o)
 }
 
 /* Returned the elapsed time in us */
-static unsigned event_loop(struct test_output *o, unsigned duration_ms)
+static bool event_loop(struct test_output *o, unsigned duration_ms,
+		       unsigned *elapsed)
 {
 	unsigned long start, end;
 	int count = 0;
@@ -1063,7 +1082,10 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 		completed_events = run_test_step(o);
 		if (o->pending_events)
 			completed_events |= wait_for_events(o);
-		check_all_state(o, completed_events);
+
+		if (!check_all_state(o, completed_events))
+			return false;
+
 		update_all_state(o, completed_events);
 
 		if (count && (gettime_us() - start) / 1000 >= duration_ms)
@@ -1078,7 +1100,9 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 	if (o->pending_events)
 		wait_for_events(o);
 
-	return end - start;
+	*elapsed = end - start;
+
+	return true;
 }
 
 static void free_test_output(struct test_output *o)
@@ -1188,8 +1212,11 @@ static void calibrate_ts(struct test_output *o, int crtc_idx)
 static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 				   int crtc_count, int duration_ms)
 {
+	struct udev_monitor *mon = igt_watch_hotplug();
 	unsigned bo_size = 0;
 	bool vblank = true;
+	bool retried = false;
+	bool state_ok;
 	unsigned elapsed;
 	uint64_t tiling;
 	int i;
@@ -1231,8 +1258,11 @@ static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 	for (i = 0; i < o->count; i++)
 		kmstest_dump_mode(&o->kmode[i]);
 
+retry:
 	kmstest_unset_all_crtcs(drm_fd, resources);
 
+	igt_flush_hotplugs(mon);
+
 	if (set_mode(o, o->fb_ids[0], 0, 0)) {
 		/* We may fail to apply the mode if there are hidden
 		 * constraints, such as bandwidth on the third pipe.
@@ -1279,12 +1309,31 @@ static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 	/* We run the vblank and flip actions in parallel by default. */
 	o->seq_step = max(o->vblank_state.seq_step, o->flip_state.seq_step);
 
-	elapsed = event_loop(o, duration_ms);
+	state_ok = event_loop(o, duration_ms, &elapsed);
 
 	if (o->flags & TEST_FLIP && !(o->flags & TEST_NOEVENT))
-		check_final_state(o, &o->flip_state, elapsed);
+		state_ok &= check_final_state(o, &o->flip_state, elapsed);
 	if (o->flags & TEST_VBLANK)
-		check_final_state(o, &o->vblank_state, elapsed);
+		state_ok &= check_final_state(o, &o->vblank_state, elapsed);
+
+	/*
+	 * Some monitors with odd behavior signal a bad link after waking from
+	 * a power saving state and the subsequent (successful) modeset. This
+	 * will result in a link-retraining (DP) or async modeset (HDMI),
+	 * which in turn makes the test miss vblank/flip events and fail.
+	 * Work around this by retrying the test once in case of such a link
+	 * reset event, which the driver signals with a hotplug event.
+	 */
+	if (!state_ok) {
+		igt_assert(!retried && igt_hotplug_detected(mon, 3));
+		igt_debug("Retrying after a hotplug event\n");
+
+		retried = true;
+		memset(&o->vblank_state, 0, sizeof(o->vblank_state));
+		memset(&o->flip_state, 0, sizeof(o->flip_state));
+
+		goto retry;
+	}
 
 out:
 	igt_remove_fb(drm_fd, &o->fb_info[2]);
@@ -1294,6 +1343,8 @@ out:
 	last_connector = NULL;
 
 	free_test_output(o);
+
+	igt_cleanup_hotplug(mon);
 }
 
 static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
-- 
2.23.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
@ 2020-05-11 19:08 ` Patchwork
  2020-05-11 19:08 ` [igt-dev] [PATCH v2] " Imre Deak
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2020-05-11 19:08 UTC (permalink / raw)
  To: Imre Deak; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset
URL   : https://patchwork.freedesktop.org/series/77167/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8466 -> IGTPW_4557
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html


Changes
-------

  No changes found


Participating hosts (49 -> 43)
------------------------------

  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5646 -> IGTPW_4557

  CI-20190529: 20190529
  CI_DRM_8466: eea130b942bec4cb8c19514b3a63aed25e4dec27 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4557: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html
  IGT_5646: 5a5a3162a7638b3ae38b6dc2545622c204d1b97c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
  2020-05-11 19:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2020-05-11 19:08 ` Imre Deak
  2020-05-12 15:11   ` Shankar, Uma
  2020-05-11 20:27 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Imre Deak @ 2020-05-11 19:08 UTC (permalink / raw)
  To: igt-dev

At least an IIyama and LG monitor have a strange behaviour when waking
from a power saving state and getting enabled with an otherwise
successful modeset: after the modeset in ~2 sec they signal a bad link
state, either due to a lost CR/EQ in case of DP or a lost
scrambling/TMDS clock setting in case of HDMI link. In response the
driver resets the link with either a link-retraining or a modeset, which
in turn makes the test miss vblank/flip events and fail.

Work around the above issue, by retrying the test once if the test
detects after a failure that a link reset happened during the test and a
corresponding hotplug uevent was sent by the driver.

v2: Suspend the signal helper while waiting for a hotplug event, so the
    wait will not get inerrupted/restarted in an endless loop.

Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 tests/kms_flip.c | 115 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 84 insertions(+), 31 deletions(-)

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 5e3e196c0..199b6eb41 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -482,7 +482,7 @@ static void vblank_handler(int fd, unsigned int frame, unsigned int sec,
 	fixup_premature_vblank_ts(o, &o->vblank_state);
 }
 
-static void check_state(const struct test_output *o, const struct event_state *es)
+static bool check_state(const struct test_output *o, const struct event_state *es)
 {
 	struct timeval diff;
 
@@ -496,7 +496,7 @@ static void check_state(const struct test_output *o, const struct event_state *e
 	}
 
 	if (es->count == 0)
-		return;
+		return true;
 
 	timersub(&es->current_ts, &es->last_received_ts, &diff);
 	igt_assert_f(timercmp(&es->last_received_ts, &es->current_ts, <),
@@ -507,10 +507,12 @@ static void check_state(const struct test_output *o, const struct event_state *e
 	/* check only valid if no modeset happens in between, that increments by
 	 * (1 << 23) on each step. This bounding matches the one in
 	 * DRM_IOCTL_WAIT_VBLANK. */
-	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)))
-		igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <= 1UL << 23,
-			     "unexpected %s seq %u, should be >= %u\n",
-			     es->name, es->current_seq, es->last_seq + o->seq_step);
+	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)) &&
+	    es->current_seq - (es->last_seq + o->seq_step) > 1UL << 23) {
+		igt_debug("unexpected %s seq %u, should be >= %u\n",
+			  es->name, es->current_seq, es->last_seq + o->seq_step);
+		return false;
+	}
 
 	if (o->flags & TEST_CHECK_TS) {
 		double elapsed, expected;
@@ -525,17 +527,25 @@ static void check_state(const struct test_output *o, const struct event_state *e
 			  elapsed, expected, expected * 0.005,
 			  fabs((elapsed - expected) / expected) * 100);
 
-		igt_assert_f(fabs((elapsed - expected) / expected) <= 0.005,
-			     "inconsistent %s ts/seq: last %.06f/%u, current %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
-			     es->name, timeval_float(&es->last_ts), es->last_seq,
-			     timeval_float(&es->current_ts), es->current_seq,
-			     elapsed, expected);
+		if (fabs((elapsed - expected) / expected) > 0.005) {
+			igt_debug("inconsistent %s ts/seq: last %.06f/%u, current %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
+				  es->name, timeval_float(&es->last_ts), es->last_seq,
+				  timeval_float(&es->current_ts), es->current_seq,
+				  elapsed, expected);
 
-		igt_assert_f(es->current_seq == es->last_seq + o->seq_step,
-			     "unexpected %s seq %u, expected %u\n",
-			     es->name, es->current_seq,
-			     es->last_seq + o->seq_step);
+			return false;
+		}
+
+		if (es->current_seq != es->last_seq + o->seq_step) {
+			igt_debug("unexpected %s seq %u, expected %u\n",
+				  es->name, es->current_seq,
+				  es->last_seq + o->seq_step);
+
+			return false;
+		}
 	}
+
+	return true;
 }
 
 static void check_state_correlation(struct test_output *o,
@@ -562,7 +572,7 @@ static void check_state_correlation(struct test_output *o,
 		     es1->name, es2->name, usec_diff / USEC_PER_SEC);
 }
 
-static void check_all_state(struct test_output *o,
+static bool check_all_state(struct test_output *o,
 			    unsigned int completed_events)
 {
 	bool flip, vblank;
@@ -570,14 +580,17 @@ static void check_all_state(struct test_output *o,
 	flip = completed_events & EVENT_FLIP;
 	vblank = completed_events & EVENT_VBLANK;
 
-	if (flip)
-		check_state(o, &o->flip_state);
-	if (vblank)
-		check_state(o, &o->vblank_state);
+	if (flip && !check_state(o, &o->flip_state))
+		return false;
+
+	if (vblank && !check_state(o, &o->vblank_state))
+		return false;
 
 	/* FIXME: Correlation check is broken. */
 	if (flip && vblank && 0)
 		check_state_correlation(o, &o->flip_state, &o->vblank_state);
+
+	return true;
 }
 
 static void recreate_fb(struct test_output *o)
@@ -982,7 +995,7 @@ static bool fb_is_bound(struct test_output *o, int fb)
 	return true;
 }
 
-static void check_final_state(const struct test_output *o,
+static bool check_final_state(const struct test_output *o,
 			      const struct event_state *es,
 			      unsigned int elapsed)
 {
@@ -999,11 +1012,16 @@ static void check_final_state(const struct test_output *o,
 		igt_debug("expected %d, counted %d, encoder type %d\n",
 			  (int)(elapsed / actual_frame_time(o)), count,
 			  o->kencoder[0]->encoder_type);
-		igt_assert_f(elapsed >= min && elapsed <= max,
-			     "dropped frames, expected %d, counted %d, encoder type %d\n",
-			     (int)(elapsed / actual_frame_time(o)), count,
-			     o->kencoder[0]->encoder_type);
+		if (elapsed < min || elapsed > max) {
+			igt_debug("dropped frames, expected %d, counted %d, encoder type %d\n",
+				  (int)(elapsed / actual_frame_time(o)), count,
+				  o->kencoder[0]->encoder_type);
+
+			return false;
+		}
 	}
+
+	return true;
 }
 
 /*
@@ -1050,7 +1068,8 @@ static unsigned int wait_for_events(struct test_output *o)
 }
 
 /* Returned the elapsed time in us */
-static unsigned event_loop(struct test_output *o, unsigned duration_ms)
+static bool event_loop(struct test_output *o, unsigned duration_ms,
+		       unsigned *elapsed)
 {
 	unsigned long start, end;
 	int count = 0;
@@ -1063,7 +1082,10 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 		completed_events = run_test_step(o);
 		if (o->pending_events)
 			completed_events |= wait_for_events(o);
-		check_all_state(o, completed_events);
+
+		if (!check_all_state(o, completed_events))
+			return false;
+
 		update_all_state(o, completed_events);
 
 		if (count && (gettime_us() - start) / 1000 >= duration_ms)
@@ -1078,7 +1100,9 @@ static unsigned event_loop(struct test_output *o, unsigned duration_ms)
 	if (o->pending_events)
 		wait_for_events(o);
 
-	return end - start;
+	*elapsed = end - start;
+
+	return true;
 }
 
 static void free_test_output(struct test_output *o)
@@ -1188,8 +1212,11 @@ static void calibrate_ts(struct test_output *o, int crtc_idx)
 static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 				   int crtc_count, int duration_ms)
 {
+	struct udev_monitor *mon = igt_watch_hotplug();
 	unsigned bo_size = 0;
 	bool vblank = true;
+	bool retried = false;
+	bool state_ok;
 	unsigned elapsed;
 	uint64_t tiling;
 	int i;
@@ -1231,8 +1258,11 @@ static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 	for (i = 0; i < o->count; i++)
 		kmstest_dump_mode(&o->kmode[i]);
 
+retry:
 	kmstest_unset_all_crtcs(drm_fd, resources);
 
+	igt_flush_hotplugs(mon);
+
 	if (set_mode(o, o->fb_ids[0], 0, 0)) {
 		/* We may fail to apply the mode if there are hidden
 		 * constraints, such as bandwidth on the third pipe.
@@ -1279,12 +1309,33 @@ static void __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 	/* We run the vblank and flip actions in parallel by default. */
 	o->seq_step = max(o->vblank_state.seq_step, o->flip_state.seq_step);
 
-	elapsed = event_loop(o, duration_ms);
+	state_ok = event_loop(o, duration_ms, &elapsed);
 
 	if (o->flags & TEST_FLIP && !(o->flags & TEST_NOEVENT))
-		check_final_state(o, &o->flip_state, elapsed);
+		state_ok &= check_final_state(o, &o->flip_state, elapsed);
 	if (o->flags & TEST_VBLANK)
-		check_final_state(o, &o->vblank_state, elapsed);
+		state_ok &= check_final_state(o, &o->vblank_state, elapsed);
+
+	/*
+	 * Some monitors with odd behavior signal a bad link after waking from
+	 * a power saving state and the subsequent (successful) modeset. This
+	 * will result in a link-retraining (DP) or async modeset (HDMI),
+	 * which in turn makes the test miss vblank/flip events and fail.
+	 * Work around this by retrying the test once in case of such a link
+	 * reset event, which the driver signals with a hotplug event.
+	 */
+	if (!state_ok) {
+		igt_suspend_signal_helper();
+		igt_assert(!retried && igt_hotplug_detected(mon, 3));
+		igt_resume_signal_helper();
+
+		igt_debug("Retrying after a hotplug event\n");
+		retried = true;
+		memset(&o->vblank_state, 0, sizeof(o->vblank_state));
+		memset(&o->flip_state, 0, sizeof(o->flip_state));
+
+		goto retry;
+	}
 
 out:
 	igt_remove_fb(drm_fd, &o->fb_info[2]);
@@ -1294,6 +1345,8 @@ out:
 	last_connector = NULL;
 
 	free_test_output(o);
+
+	igt_cleanup_hotplug(mon);
 }
 
 static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
-- 
2.23.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
  2020-05-11 19:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2020-05-11 19:08 ` [igt-dev] [PATCH v2] " Imre Deak
@ 2020-05-11 20:27 ` Patchwork
  2020-05-11 21:32   ` Imre Deak
  2020-05-11 23:28 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Patchwork @ 2020-05-11 20:27 UTC (permalink / raw)
  To: Imre Deak; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
URL   : https://patchwork.freedesktop.org/series/77167/
State : failure

== Summary ==

CI Bug Log - changes from IGT_5647 -> IGTPW_4558
====================================================

Summary
-------

  **FAILURE**

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

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html

Possible new issues
-------------------

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@hangcheck:
    - fi-icl-u2:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-icl-u2/igt@i915_selftest@live@hangcheck.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-icl-u2/igt@i915_selftest@live@hangcheck.html

  
Known issues
------------

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

### IGT changes ###

#### Possible fixes ####

  * igt@i915_selftest@live@execlists:
    - fi-skl-guc:         [INCOMPLETE][3] -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-skl-guc/igt@i915_selftest@live@execlists.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-skl-guc/igt@i915_selftest@live@execlists.html

  
#### Warnings ####

  * igt@i915_pm_rpm@module-reload:
    - fi-kbl-x1275:       [FAIL][5] ([i915#62]) -> [SKIP][6] ([fdo#109271])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62


Participating hosts (49 -> 42)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5647 -> IGTPW_4558

  CI-20190529: 20190529
  CI_DRM_8467: 1a0f0c378117fc90f421a692698ad85963ecdb3a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4558: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
  IGT_5647: 726e09870f0b502b60bb1ecd209fc8af209ed378 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
  2020-05-11 20:27 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
@ 2020-05-11 21:32   ` Imre Deak
  2020-05-11 23:46     ` Vudum, Lakshminarayana
  0 siblings, 1 reply; 14+ messages in thread
From: Imre Deak @ 2020-05-11 21:32 UTC (permalink / raw)
  To: igt-dev, Lakshminarayana Vudum

Hi Lakshmi,

On Mon, May 11, 2020 at 08:27:27PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
> URL   : https://patchwork.freedesktop.org/series/77167/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from IGT_5647 -> IGTPW_4558
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with IGTPW_4558 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in IGTPW_4558, please notify your bug team to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in IGTPW_4558:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@i915_selftest@live@hangcheck:
>     - fi-icl-u2:          [PASS][1] -> [INCOMPLETE][2]
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-icl-u2/igt@i915_selftest@live@hangcheck.html
>    [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-icl-u2/igt@i915_selftest@live@hangcheck.html


This looks unrelated, and a similar but not filed issue I found is:
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8461/fi-icl-y/igt@i915_selftest@live@hangcheck.html

> 
>   
> Known issues
> ------------
> 
>   Here are the changes found in IGTPW_4558 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Possible fixes ####
> 
>   * igt@i915_selftest@live@execlists:
>     - fi-skl-guc:         [INCOMPLETE][3] -> [PASS][4]
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-skl-guc/igt@i915_selftest@live@execlists.html
>    [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-skl-guc/igt@i915_selftest@live@execlists.html
> 
>   
> #### Warnings ####
> 
>   * igt@i915_pm_rpm@module-reload:
>     - fi-kbl-x1275:       [FAIL][5] ([i915#62]) -> [SKIP][6] ([fdo#109271])
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
>    [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
> 
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
> 
>   [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
>   [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
>   [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
> 
> 
> Participating hosts (49 -> 42)
> ------------------------------
> 
>   Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus 
> 
> 
> Build changes
> -------------
> 
>   * CI: CI-20190529 -> None
>   * IGT: IGT_5647 -> IGTPW_4558
> 
>   CI-20190529: 20190529
>   CI_DRM_8467: 1a0f0c378117fc90f421a692698ad85963ecdb3a @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGTPW_4558: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
>   IGT_5647: 726e09870f0b502b60bb1ecd209fc8af209ed378 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
                   ` (2 preceding siblings ...)
  2020-05-11 20:27 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
@ 2020-05-11 23:28 ` Patchwork
  2020-05-11 23:45 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
  2020-05-12  4:40 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2020-05-11 23:28 UTC (permalink / raw)
  To: Imre Deak; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset
URL   : https://patchwork.freedesktop.org/series/77167/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8466_full -> IGTPW_4557_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html

Possible new issues
-------------------

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

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1}:
    - shard-tglb:         [FAIL][1] ([i915#488]) -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-tglb1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-tglb1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@a-edp1.html

  * {igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1}:
    - shard-tglb:         [FAIL][3] ([i915#488]) -> [FAIL][4] +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-tglb8/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-tglb7/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html

  
Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@gen9_exec_parse@allowed-all:
    - shard-apl:          [PASS][5] -> [DMESG-WARN][6] ([i915#1436] / [i915#716])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl4/igt@gen9_exec_parse@allowed-all.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl6/igt@gen9_exec_parse@allowed-all.html

  * igt@kms_cursor_crc@pipe-a-cursor-256x256-offscreen:
    - shard-kbl:          [PASS][7] -> [FAIL][8] ([i915#54] / [i915#93] / [i915#95])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl6/igt@kms_cursor_crc@pipe-a-cursor-256x256-offscreen.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl3/igt@kms_cursor_crc@pipe-a-cursor-256x256-offscreen.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [PASS][9] -> [FAIL][10] ([i915#72])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-glk7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-glk5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic:
    - shard-apl:          [PASS][11] -> [FAIL][12] ([i915#1566] / [i915#95])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl7/igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-kbl:          [PASS][13] -> [DMESG-WARN][14] ([i915#180] / [i915#93] / [i915#95])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl3/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
    - shard-apl:          [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl4/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid:
    - shard-kbl:          [PASS][17] -> [FAIL][18] ([fdo#108145] / [i915#265] / [i915#93] / [i915#95])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl1/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl4/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html
    - shard-apl:          [PASS][19] -> [FAIL][20] ([fdo#108145] / [i915#265] / [i915#95])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl8/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html

  * igt@kms_plane_cursor@pipe-a-viewport-size-128:
    - shard-apl:          [PASS][21] -> [FAIL][22] ([i915#1559] / [i915#95])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl6/igt@kms_plane_cursor@pipe-a-viewport-size-128.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl2/igt@kms_plane_cursor@pipe-a-viewport-size-128.html
    - shard-kbl:          [PASS][23] -> [FAIL][24] ([i915#1559] / [i915#93] / [i915#95])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl6/igt@kms_plane_cursor@pipe-a-viewport-size-128.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl2/igt@kms_plane_cursor@pipe-a-viewport-size-128.html

  * igt@kms_psr@psr2_no_drrs:
    - shard-iclb:         [PASS][25] -> [SKIP][26] ([fdo#109441]) +2 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-iclb4/igt@kms_psr@psr2_no_drrs.html

  
#### Possible fixes ####

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-hsw:          [WARN][27] ([i915#1519]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-hsw8/igt@i915_pm_rc6_residency@rc6-idle.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-hsw6/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-apl:          [DMESG-WARN][29] ([i915#180]) -> [PASS][30] +4 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl2/igt@i915_suspend@fence-restore-tiled2untiled.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl1/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen:
    - shard-kbl:          [FAIL][31] ([i915#54] / [i915#93] / [i915#95]) -> [PASS][32] +1 similar issue
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-64x64-onscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen:
    - shard-kbl:          [FAIL][33] ([i915#54]) -> [PASS][34] +1 similar issue
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl1/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl6/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
    - shard-apl:          [FAIL][35] ([i915#54]) -> [PASS][36] +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl3/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html

  * igt@kms_cursor_legacy@pipe-d-single-move:
    - shard-tglb:         [SKIP][37] -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-tglb3/igt@kms_cursor_legacy@pipe-d-single-move.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-tglb8/igt@kms_cursor_legacy@pipe-d-single-move.html

  * igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled:
    - shard-apl:          [FAIL][39] ([i915#52] / [i915#54] / [i915#95]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl7/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl2/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html
    - shard-kbl:          [FAIL][41] ([i915#177] / [i915#52] / [i915#54] / [i915#93] / [i915#95]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl7/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl4/igt@kms_draw_crc@draw-method-xrgb8888-blt-untiled.html

  * igt@kms_flip_tiling@flip-changes-tiling-y:
    - shard-apl:          [FAIL][43] ([i915#95]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl8/igt@kms_flip_tiling@flip-changes-tiling-y.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl1/igt@kms_flip_tiling@flip-changes-tiling-y.html
    - shard-kbl:          [FAIL][45] ([i915#699] / [i915#93] / [i915#95]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl1/igt@kms_flip_tiling@flip-changes-tiling-y.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl4/igt@kms_flip_tiling@flip-changes-tiling-y.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
    - shard-kbl:          [DMESG-WARN][47] ([i915#180]) -> [PASS][48] +7 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         [SKIP][49] ([fdo#109441]) -> [PASS][50] +1 similar issue
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-iclb1/igt@kms_psr@psr2_primary_page_flip.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html

  * igt@kms_setmode@basic:
    - shard-apl:          [FAIL][51] ([i915#31]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl8/igt@kms_setmode@basic.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl2/igt@kms_setmode@basic.html

  
#### Warnings ####

  * igt@kms_content_protection@atomic:
    - shard-apl:          [TIMEOUT][53] ([i915#1319]) -> [FAIL][54] ([fdo#110321] / [fdo#110336])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl4/igt@kms_content_protection@atomic.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl6/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@srm:
    - shard-apl:          [TIMEOUT][55] ([i915#1319]) -> [FAIL][56] ([fdo#110321])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl1/igt@kms_content_protection@srm.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl3/igt@kms_content_protection@srm.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-basic:
    - shard-apl:          [FAIL][57] ([fdo#108145] / [i915#265] / [i915#95]) -> [FAIL][58] ([fdo#108145] / [i915#265])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl6/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
    - shard-apl:          [FAIL][59] ([fdo#108145] / [i915#265]) -> [FAIL][60] ([fdo#108145] / [i915#265] / [i915#95])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-apl7/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-7efc:
    - shard-kbl:          [FAIL][61] ([fdo#108145] / [i915#265]) -> [FAIL][62] ([fdo#108145] / [i915#265] / [i915#93] / [i915#95])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl1/igt@kms_plane_alpha_blend@pipe-b-alpha-7efc.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl1/igt@kms_plane_alpha_blend@pipe-b-alpha-7efc.html

  * igt@kms_sysfs_edid_timing:
    - shard-kbl:          [FAIL][63] ([IGT#2] / [i915#93] / [i915#95]) -> [FAIL][64] ([IGT#2])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8466/shard-kbl1/igt@kms_sysfs_edid_timing.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/shard-kbl1/igt@kms_sysfs_edid_timing.html

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

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
  [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1519]: https://gitlab.freedesktop.org/drm/intel/issues/1519
  [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
  [i915#1559]: https://gitlab.freedesktop.org/drm/intel/issues/1559
  [i915#1566]: https://gitlab.freedesktop.org/drm/intel/issues/1566
  [i915#177]: https://gitlab.freedesktop.org/drm/intel/issues/177
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#488]: https://gitlab.freedesktop.org/drm/intel/issues/488
  [i915#52]: https://gitlab.freedesktop.org/drm/intel/issues/52
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#699]: https://gitlab.freedesktop.org/drm/intel/issues/699
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (11 -> 8)
------------------------------

  Missing    (3): pig-skl-6260u pig-glk-j5005 pig-icl-1065g7 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5646 -> IGTPW_4557
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_8466: eea130b942bec4cb8c19514b3a63aed25e4dec27 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4557: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html
  IGT_5646: 5a5a3162a7638b3ae38b6dc2545622c204d1b97c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4557/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
                   ` (3 preceding siblings ...)
  2020-05-11 23:28 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset Patchwork
@ 2020-05-11 23:45 ` Patchwork
  2020-05-12  4:40 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2020-05-11 23:45 UTC (permalink / raw)
  To: Imre Deak; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
URL   : https://patchwork.freedesktop.org/series/77167/
State : success

== Summary ==

CI Bug Log - changes from IGT_5647 -> IGTPW_4558
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html

Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@hangcheck:
    - fi-icl-u2:          [PASS][1] -> [INCOMPLETE][2] ([i915#926])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-icl-u2/igt@i915_selftest@live@hangcheck.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-icl-u2/igt@i915_selftest@live@hangcheck.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@execlists:
    - fi-skl-guc:         [INCOMPLETE][3] ([i915#1874]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-skl-guc/igt@i915_selftest@live@execlists.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-skl-guc/igt@i915_selftest@live@execlists.html

  
#### Warnings ####

  * igt@i915_pm_rpm@module-reload:
    - fi-kbl-x1275:       [FAIL][5] ([i915#62]) -> [SKIP][6] ([fdo#109271])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
  [i915#1874]: https://gitlab.freedesktop.org/drm/intel/issues/1874
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#926]: https://gitlab.freedesktop.org/drm/intel/issues/926


Participating hosts (49 -> 42)
------------------------------

  Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5647 -> IGTPW_4558

  CI-20190529: 20190529
  CI_DRM_8467: 1a0f0c378117fc90f421a692698ad85963ecdb3a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4558: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
  IGT_5647: 726e09870f0b502b60bb1ecd209fc8af209ed378 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
  2020-05-11 21:32   ` Imre Deak
@ 2020-05-11 23:46     ` Vudum, Lakshminarayana
  0 siblings, 0 replies; 14+ messages in thread
From: Vudum, Lakshminarayana @ 2020-05-11 23:46 UTC (permalink / raw)
  To: Deak, Imre, igt-dev

Imre, I have Re-reported the results.

-----Original Message-----
From: Imre Deak <imre.deak@intel.com> 
Sent: Tuesday, May 12, 2020 12:33 AM
To: igt-dev@lists.freedesktop.org; Vudum, Lakshminarayana <lakshminarayana.vudum@intel.com>
Subject: Re: ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)

Hi Lakshmi,

On Mon, May 11, 2020 at 08:27:27PM +0000, Patchwork wrote:
> == Series Details ==
> 
> Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
> URL   : https://patchwork.freedesktop.org/series/77167/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from IGT_5647 -> IGTPW_4558 
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with IGTPW_4558 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in IGTPW_4558, please notify your bug team to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: 
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in IGTPW_4558:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@i915_selftest@live@hangcheck:
>     - fi-icl-u2:          [PASS][1] -> [INCOMPLETE][2]
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-icl-u2/igt@i915_selftest@live@hangcheck.html
>    [2]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-icl-u2/igt@i915
> _selftest@live@hangcheck.html


This looks unrelated, and a similar but not filed issue I found is:
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8461/fi-icl-y/igt@i915_selftest@live@hangcheck.html

> 
>   
> Known issues
> ------------
> 
>   Here are the changes found in IGTPW_4558 that come from known issues:
> 
> ### IGT changes ###
> 
> #### Possible fixes ####
> 
>   * igt@i915_selftest@live@execlists:
>     - fi-skl-guc:         [INCOMPLETE][3] -> [PASS][4]
>    [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-skl-guc/igt@i915_selftest@live@execlists.html
>    [4]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-skl-guc/igt@i91
> 5_selftest@live@execlists.html
> 
>   
> #### Warnings ####
> 
>   * igt@i915_pm_rpm@module-reload:
>     - fi-kbl-x1275:       [FAIL][5] ([i915#62]) -> [SKIP][6] ([fdo#109271])
>    [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html
>    [6]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/fi-kbl-x1275/igt@i
> 915_pm_rpm@module-reload.html
> 
>   
>   {name}: This element is suppressed. This means it is ignored when computing
>           the status of the difference (SUCCESS, WARNING, or FAILURE).
> 
>   [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
>   [i915#1803]: https://gitlab.freedesktop.org/drm/intel/issues/1803
>   [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
> 
> 
> Participating hosts (49 -> 42)
> ------------------------------
> 
>   Missing    (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-kbl-7560u fi-byt-clapper fi-bdw-samus 
> 
> 
> Build changes
> -------------
> 
>   * CI: CI-20190529 -> None
>   * IGT: IGT_5647 -> IGTPW_4558
> 
>   CI-20190529: 20190529
>   CI_DRM_8467: 1a0f0c378117fc90f421a692698ad85963ecdb3a @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGTPW_4558: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
>   IGT_5647: 726e09870f0b502b60bb1ecd209fc8af209ed378 @ 
> git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
> 
> == Logs ==
> 
> For more details see: 
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
  2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
                   ` (4 preceding siblings ...)
  2020-05-11 23:45 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
@ 2020-05-12  4:40 ` Patchwork
  5 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2020-05-12  4:40 UTC (permalink / raw)
  To: Imre Deak; +Cc: igt-dev

== Series Details ==

Series: tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2)
URL   : https://patchwork.freedesktop.org/series/77167/
State : success

== Summary ==

CI Bug Log - changes from IGT_5647_full -> IGTPW_4558_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html

Possible new issues
-------------------

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

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1}:
    - shard-tglb:         [FAIL][1] ([i915#488]) -> [FAIL][2] +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-tglb7/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-tglb2/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html

  
Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_color@pipe-a-ctm-blue-to-red:
    - shard-kbl:          [PASS][3] -> [FAIL][4] ([i915#129] / [i915#93] / [i915#95])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl4/igt@kms_color@pipe-a-ctm-blue-to-red.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl4/igt@kms_color@pipe-a-ctm-blue-to-red.html
    - shard-apl:          [PASS][5] -> [FAIL][6] ([i915#129] / [i915#95])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl2/igt@kms_color@pipe-a-ctm-blue-to-red.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl6/igt@kms_color@pipe-a-ctm-blue-to-red.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen:
    - shard-kbl:          [PASS][7] -> [FAIL][8] ([i915#54] / [i915#93] / [i915#95]) +2 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl1/igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl4/igt@kms_cursor_crc@pipe-a-cursor-128x128-offscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
    - shard-apl:          [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +2 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl2/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl1/igt@kms_cursor_crc@pipe-b-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen:
    - shard-glk:          [PASS][11] -> [FAIL][12] ([i915#54])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-glk4/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-glk1/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html
    - shard-apl:          [PASS][13] -> [FAIL][14] ([i915#54])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl8/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl7/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html
    - shard-kbl:          [PASS][15] -> [FAIL][16] ([i915#54])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl1/igt@kms_cursor_crc@pipe-c-cursor-64x64-onscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-kbl:          [PASS][17] -> [DMESG-WARN][18] ([i915#180]) +2 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl1/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
    - shard-iclb:         [PASS][19] -> [SKIP][20] ([fdo#109349])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-iclb4/igt@kms_dp_dsc@basic-dsc-enable-edp.html

  * igt@kms_flip_tiling@flip-changes-tiling-yf:
    - shard-kbl:          [PASS][21] -> [FAIL][22] ([i915#699] / [i915#93] / [i915#95])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl6/igt@kms_flip_tiling@flip-changes-tiling-yf.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl4/igt@kms_flip_tiling@flip-changes-tiling-yf.html
    - shard-apl:          [PASS][23] -> [FAIL][24] ([i915#95]) +1 similar issue
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl3/igt@kms_flip_tiling@flip-changes-tiling-yf.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl6/igt@kms_flip_tiling@flip-changes-tiling-yf.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
    - shard-apl:          [PASS][25] -> [FAIL][26] ([i915#49])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html
    - shard-kbl:          [PASS][27] -> [FAIL][28] ([i915#49])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-2p-rte:
    - shard-glk:          [PASS][29] -> [FAIL][30] ([i915#49])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-glk9/igt@kms_frontbuffer_tracking@fbc-2p-rte.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-glk5/igt@kms_frontbuffer_tracking@fbc-2p-rte.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [PASS][31] -> [SKIP][32] ([fdo#109441])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-iclb8/igt@kms_psr@psr2_sprite_plane_move.html

  
#### Possible fixes ####

  * {igt@gem_exec_fence@submit3@rcs0}:
    - shard-apl:          [FAIL][33] -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl4/igt@gem_exec_fence@submit3@rcs0.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl1/igt@gem_exec_fence@submit3@rcs0.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-apl:          [DMESG-WARN][35] ([i915#180]) -> [PASS][36] +2 similar issues
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl4/igt@i915_suspend@fence-restore-tiled2untiled.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl8/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
    - shard-kbl:          [INCOMPLETE][37] ([i915#155]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl4/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html

  * igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled:
    - shard-kbl:          [FAIL][39] ([fdo#108145] / [i915#177] / [i915#52] / [i915#54] / [i915#93] / [i915#95]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl6/igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl7/igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled.html
    - shard-apl:          [FAIL][41] ([fdo#108145] / [i915#52] / [i915#54] / [i915#95]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl7/igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl2/igt@kms_draw_crc@draw-method-xrgb8888-mmap-wc-untiled.html

  * {igt@kms_flip@flip-vs-suspend@a-dp1}:
    - shard-kbl:          [DMESG-WARN][43] ([i915#180]) -> [PASS][44] +4 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl1/igt@kms_flip@flip-vs-suspend@a-dp1.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl1/igt@kms_flip@flip-vs-suspend@a-dp1.html

  * igt@kms_flip_tiling@flip-changes-tiling:
    - shard-apl:          [FAIL][45] ([i915#95]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl3/igt@kms_flip_tiling@flip-changes-tiling.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl6/igt@kms_flip_tiling@flip-changes-tiling.html

  * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
    - shard-kbl:          [FAIL][47] ([i915#49]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl3/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl2/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
    - shard-apl:          [FAIL][49] ([i915#49]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl6/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl6/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-tglb:         [SKIP][51] ([i915#433]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-tglb7/igt@kms_hdmi_inject@inject-audio.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-tglb1/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
    - shard-apl:          [FAIL][53] ([fdo#108145] / [i915#265] / [i915#95]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl4/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl7/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html

  * igt@kms_plane_cursor@pipe-a-viewport-size-64:
    - shard-kbl:          [FAIL][55] ([i915#1559] / [i915#93] / [i915#95]) -> [PASS][56] +1 similar issue
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl7/igt@kms_plane_cursor@pipe-a-viewport-size-64.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl6/igt@kms_plane_cursor@pipe-a-viewport-size-64.html
    - shard-apl:          [FAIL][57] ([i915#1559] / [i915#95]) -> [PASS][58] +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl8/igt@kms_plane_cursor@pipe-a-viewport-size-64.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl8/igt@kms_plane_cursor@pipe-a-viewport-size-64.html

  * igt@kms_psr@psr2_primary_page_flip:
    - shard-iclb:         [SKIP][59] ([fdo#109441]) -> [PASS][60] +3 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-iclb6/igt@kms_psr@psr2_primary_page_flip.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-iclb2/igt@kms_psr@psr2_primary_page_flip.html

  * igt@kms_universal_plane@universal-plane-pipe-a-functional:
    - shard-kbl:          [FAIL][61] ([i915#331]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-kbl4/igt@kms_universal_plane@universal-plane-pipe-a-functional.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-kbl4/igt@kms_universal_plane@universal-plane-pipe-a-functional.html
    - shard-apl:          [FAIL][63] ([i915#331]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl8/igt@kms_universal_plane@universal-plane-pipe-a-functional.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl4/igt@kms_universal_plane@universal-plane-pipe-a-functional.html

  
#### Warnings ####

  * igt@i915_pm_rpm@dpms-mode-unset-lpsp:
    - shard-snb:          [SKIP][65] ([fdo#109271]) -> [INCOMPLETE][66] ([i915#82])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-snb6/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-snb5/igt@i915_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-apl:          [FAIL][67] ([fdo#110321] / [fdo#110336] / [i915#95]) -> [FAIL][68] ([fdo#110321] / [fdo#110336])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl7/igt@kms_content_protection@atomic-dpms.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl2/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@srm:
    - shard-apl:          [TIMEOUT][69] ([i915#1319]) -> [FAIL][70] ([fdo#110321])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl4/igt@kms_content_protection@srm.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl1/igt@kms_content_protection@srm.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-apl:          [DMESG-FAIL][71] ([i915#180] / [i915#95]) -> [FAIL][72] ([i915#1121] / [i915#95])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_5647/shard-apl4/igt@kms_fbcon_fbt@fbc-suspend.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/shard-apl2/igt@kms_fbcon_fbt@fbc-suspend.html

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

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321
  [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336
  [i915#1121]: https://gitlab.freedesktop.org/drm/intel/issues/1121
  [i915#129]: https://gitlab.freedesktop.org/drm/intel/issues/129
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
  [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
  [i915#1559]: https://gitlab.freedesktop.org/drm/intel/issues/1559
  [i915#177]: https://gitlab.freedesktop.org/drm/intel/issues/177
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#331]: https://gitlab.freedesktop.org/drm/intel/issues/331
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#488]: https://gitlab.freedesktop.org/drm/intel/issues/488
  [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49
  [i915#52]: https://gitlab.freedesktop.org/drm/intel/issues/52
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#699]: https://gitlab.freedesktop.org/drm/intel/issues/699
  [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82
  [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (8 -> 8)
------------------------------

  No changes in participating hosts


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5647 -> IGTPW_4558

  CI-20190529: 20190529
  CI_DRM_8467: 1a0f0c378117fc90f421a692698ad85963ecdb3a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4558: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
  IGT_5647: 726e09870f0b502b60bb1ecd209fc8af209ed378 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4558/index.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-11 19:08 ` [igt-dev] [PATCH v2] " Imre Deak
@ 2020-05-12 15:11   ` Shankar, Uma
  2020-05-12 16:50     ` Imre Deak
  0 siblings, 1 reply; 14+ messages in thread
From: Shankar, Uma @ 2020-05-12 15:11 UTC (permalink / raw)
  To: Deak, Imre, igt-dev



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Imre Deak
> Sent: Tuesday, May 12, 2020 12:39 AM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link
> reset
> 
> At least an IIyama and LG monitor have a strange behaviour when waking from a
> power saving state and getting enabled with an otherwise successful modeset:
> after the modeset in ~2 sec they signal a bad link state, either due to a lost
> CR/EQ in case of DP or a lost scrambling/TMDS clock setting in case of HDMI link.
> In response the driver resets the link with either a link-retraining or a modeset,
> which in turn makes the test miss vblank/flip events and fail.
> 
> Work around the above issue, by retrying the test once if the test detects after a
> failure that a link reset happened during the test and a corresponding hotplug
> uevent was sent by the driver.
> 
> v2: Suspend the signal helper while waiting for a hotplug event, so the
>     wait will not get inerrupted/restarted in an endless loop.
>

Though not sure that this is behavior which should be allowed from a compliant monitor,
I feel this is the right way to handle/WA this.  We may have to extend this to some other tests
as well which will also get impacted due to these spurious hotplug events.

Overall this particular change looks good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>

> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
>  tests/kms_flip.c | 115 ++++++++++++++++++++++++++++++++++-------------
>  1 file changed, 84 insertions(+), 31 deletions(-)
> 
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c index 5e3e196c0..199b6eb41
> 100755
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -482,7 +482,7 @@ static void vblank_handler(int fd, unsigned int frame,
> unsigned int sec,
>  	fixup_premature_vblank_ts(o, &o->vblank_state);  }
> 
> -static void check_state(const struct test_output *o, const struct event_state *es)
> +static bool check_state(const struct test_output *o, const struct
> +event_state *es)
>  {
>  	struct timeval diff;
> 
> @@ -496,7 +496,7 @@ static void check_state(const struct test_output *o, const
> struct event_state *e
>  	}
> 
>  	if (es->count == 0)
> -		return;
> +		return true;
> 
>  	timersub(&es->current_ts, &es->last_received_ts, &diff);
>  	igt_assert_f(timercmp(&es->last_received_ts, &es->current_ts, <), @@ -
> 507,10 +507,12 @@ static void check_state(const struct test_output *o, const
> struct event_state *e
>  	/* check only valid if no modeset happens in between, that increments
> by
>  	 * (1 << 23) on each step. This bounding matches the one in
>  	 * DRM_IOCTL_WAIT_VBLANK. */
> -	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)))
> -		igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <=
> 1UL << 23,
> -			     "unexpected %s seq %u, should be >= %u\n",
> -			     es->name, es->current_seq, es->last_seq + o-
> >seq_step);
> +	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)) &&
> +	    es->current_seq - (es->last_seq + o->seq_step) > 1UL << 23) {
> +		igt_debug("unexpected %s seq %u, should be >= %u\n",
> +			  es->name, es->current_seq, es->last_seq + o->seq_step);
> +		return false;
> +	}
> 
>  	if (o->flags & TEST_CHECK_TS) {
>  		double elapsed, expected;
> @@ -525,17 +527,25 @@ static void check_state(const struct test_output *o,
> const struct event_state *e
>  			  elapsed, expected, expected * 0.005,
>  			  fabs((elapsed - expected) / expected) * 100);
> 
> -		igt_assert_f(fabs((elapsed - expected) / expected) <= 0.005,
> -			     "inconsistent %s ts/seq: last %.06f/%u, current
> %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> -			     es->name, timeval_float(&es->last_ts), es->last_seq,
> -			     timeval_float(&es->current_ts), es->current_seq,
> -			     elapsed, expected);
> +		if (fabs((elapsed - expected) / expected) > 0.005) {
> +			igt_debug("inconsistent %s ts/seq: last %.06f/%u, current
> %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> +				  es->name, timeval_float(&es->last_ts), es-
> >last_seq,
> +				  timeval_float(&es->current_ts), es->current_seq,
> +				  elapsed, expected);
> 
> -		igt_assert_f(es->current_seq == es->last_seq + o->seq_step,
> -			     "unexpected %s seq %u, expected %u\n",
> -			     es->name, es->current_seq,
> -			     es->last_seq + o->seq_step);
> +			return false;
> +		}
> +
> +		if (es->current_seq != es->last_seq + o->seq_step) {
> +			igt_debug("unexpected %s seq %u, expected %u\n",
> +				  es->name, es->current_seq,
> +				  es->last_seq + o->seq_step);
> +
> +			return false;
> +		}
>  	}
> +
> +	return true;
>  }
> 
>  static void check_state_correlation(struct test_output *o, @@ -562,7 +572,7
> @@ static void check_state_correlation(struct test_output *o,
>  		     es1->name, es2->name, usec_diff / USEC_PER_SEC);  }
> 
> -static void check_all_state(struct test_output *o,
> +static bool check_all_state(struct test_output *o,
>  			    unsigned int completed_events)
>  {
>  	bool flip, vblank;
> @@ -570,14 +580,17 @@ static void check_all_state(struct test_output *o,
>  	flip = completed_events & EVENT_FLIP;
>  	vblank = completed_events & EVENT_VBLANK;
> 
> -	if (flip)
> -		check_state(o, &o->flip_state);
> -	if (vblank)
> -		check_state(o, &o->vblank_state);
> +	if (flip && !check_state(o, &o->flip_state))
> +		return false;
> +
> +	if (vblank && !check_state(o, &o->vblank_state))
> +		return false;
> 
>  	/* FIXME: Correlation check is broken. */
>  	if (flip && vblank && 0)
>  		check_state_correlation(o, &o->flip_state, &o->vblank_state);
> +
> +	return true;
>  }
> 
>  static void recreate_fb(struct test_output *o) @@ -982,7 +995,7 @@ static bool
> fb_is_bound(struct test_output *o, int fb)
>  	return true;
>  }
> 
> -static void check_final_state(const struct test_output *o,
> +static bool check_final_state(const struct test_output *o,
>  			      const struct event_state *es,
>  			      unsigned int elapsed)
>  {
> @@ -999,11 +1012,16 @@ static void check_final_state(const struct test_output
> *o,
>  		igt_debug("expected %d, counted %d, encoder type %d\n",
>  			  (int)(elapsed / actual_frame_time(o)), count,
>  			  o->kencoder[0]->encoder_type);
> -		igt_assert_f(elapsed >= min && elapsed <= max,
> -			     "dropped frames, expected %d, counted %d, encoder
> type %d\n",
> -			     (int)(elapsed / actual_frame_time(o)), count,
> -			     o->kencoder[0]->encoder_type);
> +		if (elapsed < min || elapsed > max) {
> +			igt_debug("dropped frames, expected %d, counted %d,
> encoder type %d\n",
> +				  (int)(elapsed / actual_frame_time(o)), count,
> +				  o->kencoder[0]->encoder_type);
> +
> +			return false;
> +		}
>  	}
> +
> +	return true;
>  }
> 
>  /*
> @@ -1050,7 +1068,8 @@ static unsigned int wait_for_events(struct test_output
> *o)  }
> 
>  /* Returned the elapsed time in us */
> -static unsigned event_loop(struct test_output *o, unsigned duration_ms)
> +static bool event_loop(struct test_output *o, unsigned duration_ms,
> +		       unsigned *elapsed)
>  {
>  	unsigned long start, end;
>  	int count = 0;
> @@ -1063,7 +1082,10 @@ static unsigned event_loop(struct test_output *o,
> unsigned duration_ms)
>  		completed_events = run_test_step(o);
>  		if (o->pending_events)
>  			completed_events |= wait_for_events(o);
> -		check_all_state(o, completed_events);
> +
> +		if (!check_all_state(o, completed_events))
> +			return false;
> +
>  		update_all_state(o, completed_events);
> 
>  		if (count && (gettime_us() - start) / 1000 >= duration_ms) @@ -
> 1078,7 +1100,9 @@ static unsigned event_loop(struct test_output *o, unsigned
> duration_ms)
>  	if (o->pending_events)
>  		wait_for_events(o);
> 
> -	return end - start;
> +	*elapsed = end - start;
> +
> +	return true;
>  }
> 
>  static void free_test_output(struct test_output *o) @@ -1188,8 +1212,11 @@
> static void calibrate_ts(struct test_output *o, int crtc_idx)  static void
> __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
>  				   int crtc_count, int duration_ms)  {
> +	struct udev_monitor *mon = igt_watch_hotplug();
>  	unsigned bo_size = 0;
>  	bool vblank = true;
> +	bool retried = false;
> +	bool state_ok;
>  	unsigned elapsed;
>  	uint64_t tiling;
>  	int i;
> @@ -1231,8 +1258,11 @@ static void __run_test_on_crtc_set(struct test_output
> *o, int *crtc_idxs,
>  	for (i = 0; i < o->count; i++)
>  		kmstest_dump_mode(&o->kmode[i]);
> 
> +retry:
>  	kmstest_unset_all_crtcs(drm_fd, resources);
> 
> +	igt_flush_hotplugs(mon);
> +
>  	if (set_mode(o, o->fb_ids[0], 0, 0)) {
>  		/* We may fail to apply the mode if there are hidden
>  		 * constraints, such as bandwidth on the third pipe.
> @@ -1279,12 +1309,33 @@ static void __run_test_on_crtc_set(struct
> test_output *o, int *crtc_idxs,
>  	/* We run the vblank and flip actions in parallel by default. */
>  	o->seq_step = max(o->vblank_state.seq_step, o->flip_state.seq_step);
> 
> -	elapsed = event_loop(o, duration_ms);
> +	state_ok = event_loop(o, duration_ms, &elapsed);
> 
>  	if (o->flags & TEST_FLIP && !(o->flags & TEST_NOEVENT))
> -		check_final_state(o, &o->flip_state, elapsed);
> +		state_ok &= check_final_state(o, &o->flip_state, elapsed);
>  	if (o->flags & TEST_VBLANK)
> -		check_final_state(o, &o->vblank_state, elapsed);
> +		state_ok &= check_final_state(o, &o->vblank_state, elapsed);
> +
> +	/*
> +	 * Some monitors with odd behavior signal a bad link after waking from
> +	 * a power saving state and the subsequent (successful) modeset. This
> +	 * will result in a link-retraining (DP) or async modeset (HDMI),
> +	 * which in turn makes the test miss vblank/flip events and fail.
> +	 * Work around this by retrying the test once in case of such a link
> +	 * reset event, which the driver signals with a hotplug event.
> +	 */
> +	if (!state_ok) {
> +		igt_suspend_signal_helper();
> +		igt_assert(!retried && igt_hotplug_detected(mon, 3));
> +		igt_resume_signal_helper();
> +
> +		igt_debug("Retrying after a hotplug event\n");
> +		retried = true;
> +		memset(&o->vblank_state, 0, sizeof(o->vblank_state));
> +		memset(&o->flip_state, 0, sizeof(o->flip_state));
> +
> +		goto retry;
> +	}
> 
>  out:
>  	igt_remove_fb(drm_fd, &o->fb_info[2]); @@ -1294,6 +1345,8 @@ out:
>  	last_connector = NULL;
> 
>  	free_test_output(o);
> +
> +	igt_cleanup_hotplug(mon);
>  }
> 
>  static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
> --
> 2.23.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-12 15:11   ` Shankar, Uma
@ 2020-05-12 16:50     ` Imre Deak
  2020-05-12 17:07       ` Shankar, Uma
  0 siblings, 1 reply; 14+ messages in thread
From: Imre Deak @ 2020-05-12 16:50 UTC (permalink / raw)
  To: Shankar, Uma; +Cc: igt-dev

On Tue, May 12, 2020 at 06:11:08PM +0300, Shankar, Uma wrote:
> 
> 
> > -----Original Message-----
> > From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Imre Deak
> > Sent: Tuesday, May 12, 2020 12:39 AM
> > To: igt-dev@lists.freedesktop.org
> > Subject: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link
> > reset
> > 
> > At least an IIyama and LG monitor have a strange behaviour when waking from a
> > power saving state and getting enabled with an otherwise successful modeset:
> > after the modeset in ~2 sec they signal a bad link state, either due to a lost
> > CR/EQ in case of DP or a lost scrambling/TMDS clock setting in case of HDMI link.
> > In response the driver resets the link with either a link-retraining or a modeset,
> > which in turn makes the test miss vblank/flip events and fail.
> > 
> > Work around the above issue, by retrying the test once if the test detects after a
> > failure that a link reset happened during the test and a corresponding hotplug
> > uevent was sent by the driver.
> > 
> > v2: Suspend the signal helper while waiting for a hotplug event, so the
> >     wait will not get inerrupted/restarted in an endless loop.
> >
> 
> Though not sure that this is behavior which should be allowed from a
> compliant monitor, I feel this is the right way to handle/WA this.  We
> may have to extend this to some other tests as well which will also
> get impacted due to these spurious hotplug events.

Yes, one more place would be the connector probing at test startup,
which should be retried if a hotplug uevent is detected (waiting for
both uevents that a long pulse can generate).

> Overall this particular change looks good to me.
> Reviewed-by: Uma Shankar <uma.shankar@intel.com>

Thanks.

> 
> > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > ---
> >  tests/kms_flip.c | 115 ++++++++++++++++++++++++++++++++++-------------
> >  1 file changed, 84 insertions(+), 31 deletions(-)
> > 
> > diff --git a/tests/kms_flip.c b/tests/kms_flip.c index 5e3e196c0..199b6eb41
> > 100755
> > --- a/tests/kms_flip.c
> > +++ b/tests/kms_flip.c
> > @@ -482,7 +482,7 @@ static void vblank_handler(int fd, unsigned int frame,
> > unsigned int sec,
> >  	fixup_premature_vblank_ts(o, &o->vblank_state);  }
> > 
> > -static void check_state(const struct test_output *o, const struct event_state *es)
> > +static bool check_state(const struct test_output *o, const struct
> > +event_state *es)
> >  {
> >  	struct timeval diff;
> > 
> > @@ -496,7 +496,7 @@ static void check_state(const struct test_output *o, const
> > struct event_state *e
> >  	}
> > 
> >  	if (es->count == 0)
> > -		return;
> > +		return true;
> > 
> >  	timersub(&es->current_ts, &es->last_received_ts, &diff);
> >  	igt_assert_f(timercmp(&es->last_received_ts, &es->current_ts, <), @@ -
> > 507,10 +507,12 @@ static void check_state(const struct test_output *o, const
> > struct event_state *e
> >  	/* check only valid if no modeset happens in between, that increments
> > by
> >  	 * (1 << 23) on each step. This bounding matches the one in
> >  	 * DRM_IOCTL_WAIT_VBLANK. */
> > -	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)))
> > -		igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <=
> > 1UL << 23,
> > -			     "unexpected %s seq %u, should be >= %u\n",
> > -			     es->name, es->current_seq, es->last_seq + o-
> > >seq_step);
> > +	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)) &&
> > +	    es->current_seq - (es->last_seq + o->seq_step) > 1UL << 23) {
> > +		igt_debug("unexpected %s seq %u, should be >= %u\n",
> > +			  es->name, es->current_seq, es->last_seq + o->seq_step);
> > +		return false;
> > +	}
> > 
> >  	if (o->flags & TEST_CHECK_TS) {
> >  		double elapsed, expected;
> > @@ -525,17 +527,25 @@ static void check_state(const struct test_output *o,
> > const struct event_state *e
> >  			  elapsed, expected, expected * 0.005,
> >  			  fabs((elapsed - expected) / expected) * 100);
> > 
> > -		igt_assert_f(fabs((elapsed - expected) / expected) <= 0.005,
> > -			     "inconsistent %s ts/seq: last %.06f/%u, current
> > %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> > -			     es->name, timeval_float(&es->last_ts), es->last_seq,
> > -			     timeval_float(&es->current_ts), es->current_seq,
> > -			     elapsed, expected);
> > +		if (fabs((elapsed - expected) / expected) > 0.005) {
> > +			igt_debug("inconsistent %s ts/seq: last %.06f/%u, current
> > %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> > +				  es->name, timeval_float(&es->last_ts), es-
> > >last_seq,
> > +				  timeval_float(&es->current_ts), es->current_seq,
> > +				  elapsed, expected);
> > 
> > -		igt_assert_f(es->current_seq == es->last_seq + o->seq_step,
> > -			     "unexpected %s seq %u, expected %u\n",
> > -			     es->name, es->current_seq,
> > -			     es->last_seq + o->seq_step);
> > +			return false;
> > +		}
> > +
> > +		if (es->current_seq != es->last_seq + o->seq_step) {
> > +			igt_debug("unexpected %s seq %u, expected %u\n",
> > +				  es->name, es->current_seq,
> > +				  es->last_seq + o->seq_step);
> > +
> > +			return false;
> > +		}
> >  	}
> > +
> > +	return true;
> >  }
> > 
> >  static void check_state_correlation(struct test_output *o, @@ -562,7 +572,7
> > @@ static void check_state_correlation(struct test_output *o,
> >  		     es1->name, es2->name, usec_diff / USEC_PER_SEC);  }
> > 
> > -static void check_all_state(struct test_output *o,
> > +static bool check_all_state(struct test_output *o,
> >  			    unsigned int completed_events)
> >  {
> >  	bool flip, vblank;
> > @@ -570,14 +580,17 @@ static void check_all_state(struct test_output *o,
> >  	flip = completed_events & EVENT_FLIP;
> >  	vblank = completed_events & EVENT_VBLANK;
> > 
> > -	if (flip)
> > -		check_state(o, &o->flip_state);
> > -	if (vblank)
> > -		check_state(o, &o->vblank_state);
> > +	if (flip && !check_state(o, &o->flip_state))
> > +		return false;
> > +
> > +	if (vblank && !check_state(o, &o->vblank_state))
> > +		return false;
> > 
> >  	/* FIXME: Correlation check is broken. */
> >  	if (flip && vblank && 0)
> >  		check_state_correlation(o, &o->flip_state, &o->vblank_state);
> > +
> > +	return true;
> >  }
> > 
> >  static void recreate_fb(struct test_output *o) @@ -982,7 +995,7 @@ static bool
> > fb_is_bound(struct test_output *o, int fb)
> >  	return true;
> >  }
> > 
> > -static void check_final_state(const struct test_output *o,
> > +static bool check_final_state(const struct test_output *o,
> >  			      const struct event_state *es,
> >  			      unsigned int elapsed)
> >  {
> > @@ -999,11 +1012,16 @@ static void check_final_state(const struct test_output
> > *o,
> >  		igt_debug("expected %d, counted %d, encoder type %d\n",
> >  			  (int)(elapsed / actual_frame_time(o)), count,
> >  			  o->kencoder[0]->encoder_type);
> > -		igt_assert_f(elapsed >= min && elapsed <= max,
> > -			     "dropped frames, expected %d, counted %d, encoder
> > type %d\n",
> > -			     (int)(elapsed / actual_frame_time(o)), count,
> > -			     o->kencoder[0]->encoder_type);
> > +		if (elapsed < min || elapsed > max) {
> > +			igt_debug("dropped frames, expected %d, counted %d,
> > encoder type %d\n",
> > +				  (int)(elapsed / actual_frame_time(o)), count,
> > +				  o->kencoder[0]->encoder_type);
> > +
> > +			return false;
> > +		}
> >  	}
> > +
> > +	return true;
> >  }
> > 
> >  /*
> > @@ -1050,7 +1068,8 @@ static unsigned int wait_for_events(struct test_output
> > *o)  }
> > 
> >  /* Returned the elapsed time in us */
> > -static unsigned event_loop(struct test_output *o, unsigned duration_ms)
> > +static bool event_loop(struct test_output *o, unsigned duration_ms,
> > +		       unsigned *elapsed)
> >  {
> >  	unsigned long start, end;
> >  	int count = 0;
> > @@ -1063,7 +1082,10 @@ static unsigned event_loop(struct test_output *o,
> > unsigned duration_ms)
> >  		completed_events = run_test_step(o);
> >  		if (o->pending_events)
> >  			completed_events |= wait_for_events(o);
> > -		check_all_state(o, completed_events);
> > +
> > +		if (!check_all_state(o, completed_events))
> > +			return false;
> > +
> >  		update_all_state(o, completed_events);
> > 
> >  		if (count && (gettime_us() - start) / 1000 >= duration_ms) @@ -
> > 1078,7 +1100,9 @@ static unsigned event_loop(struct test_output *o, unsigned
> > duration_ms)
> >  	if (o->pending_events)
> >  		wait_for_events(o);
> > 
> > -	return end - start;
> > +	*elapsed = end - start;
> > +
> > +	return true;
> >  }
> > 
> >  static void free_test_output(struct test_output *o) @@ -1188,8 +1212,11 @@
> > static void calibrate_ts(struct test_output *o, int crtc_idx)  static void
> > __run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
> >  				   int crtc_count, int duration_ms)  {
> > +	struct udev_monitor *mon = igt_watch_hotplug();
> >  	unsigned bo_size = 0;
> >  	bool vblank = true;
> > +	bool retried = false;
> > +	bool state_ok;
> >  	unsigned elapsed;
> >  	uint64_t tiling;
> >  	int i;
> > @@ -1231,8 +1258,11 @@ static void __run_test_on_crtc_set(struct test_output
> > *o, int *crtc_idxs,
> >  	for (i = 0; i < o->count; i++)
> >  		kmstest_dump_mode(&o->kmode[i]);
> > 
> > +retry:
> >  	kmstest_unset_all_crtcs(drm_fd, resources);
> > 
> > +	igt_flush_hotplugs(mon);
> > +
> >  	if (set_mode(o, o->fb_ids[0], 0, 0)) {
> >  		/* We may fail to apply the mode if there are hidden
> >  		 * constraints, such as bandwidth on the third pipe.
> > @@ -1279,12 +1309,33 @@ static void __run_test_on_crtc_set(struct
> > test_output *o, int *crtc_idxs,
> >  	/* We run the vblank and flip actions in parallel by default. */
> >  	o->seq_step = max(o->vblank_state.seq_step, o->flip_state.seq_step);
> > 
> > -	elapsed = event_loop(o, duration_ms);
> > +	state_ok = event_loop(o, duration_ms, &elapsed);
> > 
> >  	if (o->flags & TEST_FLIP && !(o->flags & TEST_NOEVENT))
> > -		check_final_state(o, &o->flip_state, elapsed);
> > +		state_ok &= check_final_state(o, &o->flip_state, elapsed);
> >  	if (o->flags & TEST_VBLANK)
> > -		check_final_state(o, &o->vblank_state, elapsed);
> > +		state_ok &= check_final_state(o, &o->vblank_state, elapsed);
> > +
> > +	/*
> > +	 * Some monitors with odd behavior signal a bad link after waking from
> > +	 * a power saving state and the subsequent (successful) modeset. This
> > +	 * will result in a link-retraining (DP) or async modeset (HDMI),
> > +	 * which in turn makes the test miss vblank/flip events and fail.
> > +	 * Work around this by retrying the test once in case of such a link
> > +	 * reset event, which the driver signals with a hotplug event.
> > +	 */
> > +	if (!state_ok) {
> > +		igt_suspend_signal_helper();
> > +		igt_assert(!retried && igt_hotplug_detected(mon, 3));
> > +		igt_resume_signal_helper();
> > +
> > +		igt_debug("Retrying after a hotplug event\n");
> > +		retried = true;
> > +		memset(&o->vblank_state, 0, sizeof(o->vblank_state));
> > +		memset(&o->flip_state, 0, sizeof(o->flip_state));
> > +
> > +		goto retry;
> > +	}
> > 
> >  out:
> >  	igt_remove_fb(drm_fd, &o->fb_info[2]); @@ -1294,6 +1345,8 @@ out:
> >  	last_connector = NULL;
> > 
> >  	free_test_output(o);
> > +
> > +	igt_cleanup_hotplug(mon);
> >  }
> > 
> >  static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
> > --
> > 2.23.1
> > 
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-12 16:50     ` Imre Deak
@ 2020-05-12 17:07       ` Shankar, Uma
  2020-05-12 17:16         ` Ville Syrjälä
  0 siblings, 1 reply; 14+ messages in thread
From: Shankar, Uma @ 2020-05-12 17:07 UTC (permalink / raw)
  To: Deak, Imre; +Cc: igt-dev



> -----Original Message-----
> From: Imre Deak <imre.deak@intel.com>
> Sent: Tuesday, May 12, 2020 10:21 PM
> To: Shankar, Uma <uma.shankar@intel.com>
> Cc: igt-dev@lists.freedesktop.org
> Subject: Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI
> link reset
> 
> On Tue, May 12, 2020 at 06:11:08PM +0300, Shankar, Uma wrote:
> >
> >
> > > -----Original Message-----
> > > From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of
> > > Imre Deak
> > > Sent: Tuesday, May 12, 2020 12:39 AM
> > > To: igt-dev@lists.freedesktop.org
> > > Subject: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of
> > > a DP/HDMI link reset
> > >
> > > At least an IIyama and LG monitor have a strange behaviour when
> > > waking from a power saving state and getting enabled with an otherwise
> successful modeset:
> > > after the modeset in ~2 sec they signal a bad link state, either due
> > > to a lost CR/EQ in case of DP or a lost scrambling/TMDS clock setting in case
> of HDMI link.
> > > In response the driver resets the link with either a link-retraining
> > > or a modeset, which in turn makes the test miss vblank/flip events and fail.
> > >
> > > Work around the above issue, by retrying the test once if the test
> > > detects after a failure that a link reset happened during the test
> > > and a corresponding hotplug uevent was sent by the driver.
> > >
> > > v2: Suspend the signal helper while waiting for a hotplug event, so the
> > >     wait will not get inerrupted/restarted in an endless loop.
> > >
> >
> > Though not sure that this is behavior which should be allowed from a
> > compliant monitor, I feel this is the right way to handle/WA this.  We
> > may have to extend this to some other tests as well which will also
> > get impacted due to these spurious hotplug events.
> 
> Yes, one more place would be the connector probing at test startup, which
> should be retried if a hotplug uevent is detected (waiting for both uevents that a
> long pulse can generate).

Yes, there is also a similar failure in alpha test we have seen:
igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb - fail - Failed assertion: !mismatch || igt_skip_crc_compare

This also occurred due to the spurious interrupt only. Not sure if there is any other test which is affected.

> > Overall this particular change looks good to me.
> > Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> 
> Thanks.
> 
> >
> > > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > > ---
> > >  tests/kms_flip.c | 115
> > > ++++++++++++++++++++++++++++++++++-------------
> > >  1 file changed, 84 insertions(+), 31 deletions(-)
> > >
> > > diff --git a/tests/kms_flip.c b/tests/kms_flip.c index
> > > 5e3e196c0..199b6eb41
> > > 100755
> > > --- a/tests/kms_flip.c
> > > +++ b/tests/kms_flip.c
> > > @@ -482,7 +482,7 @@ static void vblank_handler(int fd, unsigned int
> > > frame, unsigned int sec,
> > >  	fixup_premature_vblank_ts(o, &o->vblank_state);  }
> > >
> > > -static void check_state(const struct test_output *o, const struct
> > > event_state *es)
> > > +static bool check_state(const struct test_output *o, const struct
> > > +event_state *es)
> > >  {
> > >  	struct timeval diff;
> > >
> > > @@ -496,7 +496,7 @@ static void check_state(const struct test_output
> > > *o, const struct event_state *e
> > >  	}
> > >
> > >  	if (es->count == 0)
> > > -		return;
> > > +		return true;
> > >
> > >  	timersub(&es->current_ts, &es->last_received_ts, &diff);
> > >  	igt_assert_f(timercmp(&es->last_received_ts, &es->current_ts, <),
> > > @@ -
> > > 507,10 +507,12 @@ static void check_state(const struct test_output
> > > *o, const struct event_state *e
> > >  	/* check only valid if no modeset happens in between, that
> > > increments by
> > >  	 * (1 << 23) on each step. This bounding matches the one in
> > >  	 * DRM_IOCTL_WAIT_VBLANK. */
> > > -	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)))
> > > -		igt_assert_f(es->current_seq - (es->last_seq + o->seq_step) <=
> > > 1UL << 23,
> > > -			     "unexpected %s seq %u, should be >= %u\n",
> > > -			     es->name, es->current_seq, es->last_seq + o-
> > > >seq_step);
> > > +	if (!(o->flags & (TEST_DPMS | TEST_MODESET | TEST_NO_VBLANK)) &&
> > > +	    es->current_seq - (es->last_seq + o->seq_step) > 1UL << 23) {
> > > +		igt_debug("unexpected %s seq %u, should be >= %u\n",
> > > +			  es->name, es->current_seq, es->last_seq + o->seq_step);
> > > +		return false;
> > > +	}
> > >
> > >  	if (o->flags & TEST_CHECK_TS) {
> > >  		double elapsed, expected;
> > > @@ -525,17 +527,25 @@ static void check_state(const struct
> > > test_output *o, const struct event_state *e
> > >  			  elapsed, expected, expected * 0.005,
> > >  			  fabs((elapsed - expected) / expected) * 100);
> > >
> > > -		igt_assert_f(fabs((elapsed - expected) / expected) <= 0.005,
> > > -			     "inconsistent %s ts/seq: last %.06f/%u, current
> > > %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> > > -			     es->name, timeval_float(&es->last_ts), es->last_seq,
> > > -			     timeval_float(&es->current_ts), es->current_seq,
> > > -			     elapsed, expected);
> > > +		if (fabs((elapsed - expected) / expected) > 0.005) {
> > > +			igt_debug("inconsistent %s ts/seq: last %.06f/%u, current
> > > %.06f/%u: elapsed=%.1fus expected=%.1fus\n",
> > > +				  es->name, timeval_float(&es->last_ts), es-
> > > >last_seq,
> > > +				  timeval_float(&es->current_ts), es->current_seq,
> > > +				  elapsed, expected);
> > >
> > > -		igt_assert_f(es->current_seq == es->last_seq + o->seq_step,
> > > -			     "unexpected %s seq %u, expected %u\n",
> > > -			     es->name, es->current_seq,
> > > -			     es->last_seq + o->seq_step);
> > > +			return false;
> > > +		}
> > > +
> > > +		if (es->current_seq != es->last_seq + o->seq_step) {
> > > +			igt_debug("unexpected %s seq %u, expected %u\n",
> > > +				  es->name, es->current_seq,
> > > +				  es->last_seq + o->seq_step);
> > > +
> > > +			return false;
> > > +		}
> > >  	}
> > > +
> > > +	return true;
> > >  }
> > >
> > >  static void check_state_correlation(struct test_output *o, @@
> > > -562,7 +572,7 @@ static void check_state_correlation(struct test_output *o,
> > >  		     es1->name, es2->name, usec_diff / USEC_PER_SEC);  }
> > >
> > > -static void check_all_state(struct test_output *o,
> > > +static bool check_all_state(struct test_output *o,
> > >  			    unsigned int completed_events)  {
> > >  	bool flip, vblank;
> > > @@ -570,14 +580,17 @@ static void check_all_state(struct test_output *o,
> > >  	flip = completed_events & EVENT_FLIP;
> > >  	vblank = completed_events & EVENT_VBLANK;
> > >
> > > -	if (flip)
> > > -		check_state(o, &o->flip_state);
> > > -	if (vblank)
> > > -		check_state(o, &o->vblank_state);
> > > +	if (flip && !check_state(o, &o->flip_state))
> > > +		return false;
> > > +
> > > +	if (vblank && !check_state(o, &o->vblank_state))
> > > +		return false;
> > >
> > >  	/* FIXME: Correlation check is broken. */
> > >  	if (flip && vblank && 0)
> > >  		check_state_correlation(o, &o->flip_state, &o->vblank_state);
> > > +
> > > +	return true;
> > >  }
> > >
> > >  static void recreate_fb(struct test_output *o) @@ -982,7 +995,7 @@
> > > static bool fb_is_bound(struct test_output *o, int fb)
> > >  	return true;
> > >  }
> > >
> > > -static void check_final_state(const struct test_output *o,
> > > +static bool check_final_state(const struct test_output *o,
> > >  			      const struct event_state *es,
> > >  			      unsigned int elapsed)
> > >  {
> > > @@ -999,11 +1012,16 @@ static void check_final_state(const struct
> > > test_output *o,
> > >  		igt_debug("expected %d, counted %d, encoder type %d\n",
> > >  			  (int)(elapsed / actual_frame_time(o)), count,
> > >  			  o->kencoder[0]->encoder_type);
> > > -		igt_assert_f(elapsed >= min && elapsed <= max,
> > > -			     "dropped frames, expected %d, counted %d, encoder
> > > type %d\n",
> > > -			     (int)(elapsed / actual_frame_time(o)), count,
> > > -			     o->kencoder[0]->encoder_type);
> > > +		if (elapsed < min || elapsed > max) {
> > > +			igt_debug("dropped frames, expected %d, counted %d,
> > > encoder type %d\n",
> > > +				  (int)(elapsed / actual_frame_time(o)), count,
> > > +				  o->kencoder[0]->encoder_type);
> > > +
> > > +			return false;
> > > +		}
> > >  	}
> > > +
> > > +	return true;
> > >  }
> > >
> > >  /*
> > > @@ -1050,7 +1068,8 @@ static unsigned int wait_for_events(struct
> > > test_output
> > > *o)  }
> > >
> > >  /* Returned the elapsed time in us */ -static unsigned
> > > event_loop(struct test_output *o, unsigned duration_ms)
> > > +static bool event_loop(struct test_output *o, unsigned duration_ms,
> > > +		       unsigned *elapsed)
> > >  {
> > >  	unsigned long start, end;
> > >  	int count = 0;
> > > @@ -1063,7 +1082,10 @@ static unsigned event_loop(struct test_output
> > > *o, unsigned duration_ms)
> > >  		completed_events = run_test_step(o);
> > >  		if (o->pending_events)
> > >  			completed_events |= wait_for_events(o);
> > > -		check_all_state(o, completed_events);
> > > +
> > > +		if (!check_all_state(o, completed_events))
> > > +			return false;
> > > +
> > >  		update_all_state(o, completed_events);
> > >
> > >  		if (count && (gettime_us() - start) / 1000 >= duration_ms) @@ -
> > > 1078,7 +1100,9 @@ static unsigned event_loop(struct test_output *o,
> > > unsigned
> > > duration_ms)
> > >  	if (o->pending_events)
> > >  		wait_for_events(o);
> > >
> > > -	return end - start;
> > > +	*elapsed = end - start;
> > > +
> > > +	return true;
> > >  }
> > >
> > >  static void free_test_output(struct test_output *o) @@ -1188,8
> > > +1212,11 @@ static void calibrate_ts(struct test_output *o, int
> > > crtc_idx)  static void __run_test_on_crtc_set(struct test_output *o, int
> *crtc_idxs,
> > >  				   int crtc_count, int duration_ms)  {
> > > +	struct udev_monitor *mon = igt_watch_hotplug();
> > >  	unsigned bo_size = 0;
> > >  	bool vblank = true;
> > > +	bool retried = false;
> > > +	bool state_ok;
> > >  	unsigned elapsed;
> > >  	uint64_t tiling;
> > >  	int i;
> > > @@ -1231,8 +1258,11 @@ static void __run_test_on_crtc_set(struct
> > > test_output *o, int *crtc_idxs,
> > >  	for (i = 0; i < o->count; i++)
> > >  		kmstest_dump_mode(&o->kmode[i]);
> > >
> > > +retry:
> > >  	kmstest_unset_all_crtcs(drm_fd, resources);
> > >
> > > +	igt_flush_hotplugs(mon);
> > > +
> > >  	if (set_mode(o, o->fb_ids[0], 0, 0)) {
> > >  		/* We may fail to apply the mode if there are hidden
> > >  		 * constraints, such as bandwidth on the third pipe.
> > > @@ -1279,12 +1309,33 @@ static void __run_test_on_crtc_set(struct
> > > test_output *o, int *crtc_idxs,
> > >  	/* We run the vblank and flip actions in parallel by default. */
> > >  	o->seq_step = max(o->vblank_state.seq_step,
> > > o->flip_state.seq_step);
> > >
> > > -	elapsed = event_loop(o, duration_ms);
> > > +	state_ok = event_loop(o, duration_ms, &elapsed);
> > >
> > >  	if (o->flags & TEST_FLIP && !(o->flags & TEST_NOEVENT))
> > > -		check_final_state(o, &o->flip_state, elapsed);
> > > +		state_ok &= check_final_state(o, &o->flip_state, elapsed);
> > >  	if (o->flags & TEST_VBLANK)
> > > -		check_final_state(o, &o->vblank_state, elapsed);
> > > +		state_ok &= check_final_state(o, &o->vblank_state, elapsed);
> > > +
> > > +	/*
> > > +	 * Some monitors with odd behavior signal a bad link after waking from
> > > +	 * a power saving state and the subsequent (successful) modeset. This
> > > +	 * will result in a link-retraining (DP) or async modeset (HDMI),
> > > +	 * which in turn makes the test miss vblank/flip events and fail.
> > > +	 * Work around this by retrying the test once in case of such a link
> > > +	 * reset event, which the driver signals with a hotplug event.
> > > +	 */
> > > +	if (!state_ok) {
> > > +		igt_suspend_signal_helper();
> > > +		igt_assert(!retried && igt_hotplug_detected(mon, 3));
> > > +		igt_resume_signal_helper();
> > > +
> > > +		igt_debug("Retrying after a hotplug event\n");
> > > +		retried = true;
> > > +		memset(&o->vblank_state, 0, sizeof(o->vblank_state));
> > > +		memset(&o->flip_state, 0, sizeof(o->flip_state));
> > > +
> > > +		goto retry;
> > > +	}
> > >
> > >  out:
> > >  	igt_remove_fb(drm_fd, &o->fb_info[2]); @@ -1294,6 +1345,8 @@ out:
> > >  	last_connector = NULL;
> > >
> > >  	free_test_output(o);
> > > +
> > > +	igt_cleanup_hotplug(mon);
> > >  }
> > >
> > >  static void run_test_on_crtc_set(struct test_output *o, int
> > > *crtc_idxs,
> > > --
> > > 2.23.1
> > >
> > > _______________________________________________
> > > igt-dev mailing list
> > > igt-dev@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-12 17:07       ` Shankar, Uma
@ 2020-05-12 17:16         ` Ville Syrjälä
  2020-05-13 10:23           ` Shankar, Uma
  0 siblings, 1 reply; 14+ messages in thread
From: Ville Syrjälä @ 2020-05-12 17:16 UTC (permalink / raw)
  To: Shankar, Uma; +Cc: igt-dev

On Tue, May 12, 2020 at 05:07:09PM +0000, Shankar, Uma wrote:
> 
> 
> > -----Original Message-----
> > From: Imre Deak <imre.deak@intel.com>
> > Sent: Tuesday, May 12, 2020 10:21 PM
> > To: Shankar, Uma <uma.shankar@intel.com>
> > Cc: igt-dev@lists.freedesktop.org
> > Subject: Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI
> > link reset
> > 
> > On Tue, May 12, 2020 at 06:11:08PM +0300, Shankar, Uma wrote:
> > >
> > >
> > > > -----Original Message-----
> > > > From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of
> > > > Imre Deak
> > > > Sent: Tuesday, May 12, 2020 12:39 AM
> > > > To: igt-dev@lists.freedesktop.org
> > > > Subject: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of
> > > > a DP/HDMI link reset
> > > >
> > > > At least an IIyama and LG monitor have a strange behaviour when
> > > > waking from a power saving state and getting enabled with an otherwise
> > successful modeset:
> > > > after the modeset in ~2 sec they signal a bad link state, either due
> > > > to a lost CR/EQ in case of DP or a lost scrambling/TMDS clock setting in case
> > of HDMI link.
> > > > In response the driver resets the link with either a link-retraining
> > > > or a modeset, which in turn makes the test miss vblank/flip events and fail.
> > > >
> > > > Work around the above issue, by retrying the test once if the test
> > > > detects after a failure that a link reset happened during the test
> > > > and a corresponding hotplug uevent was sent by the driver.
> > > >
> > > > v2: Suspend the signal helper while waiting for a hotplug event, so the
> > > >     wait will not get inerrupted/restarted in an endless loop.
> > > >
> > >
> > > Though not sure that this is behavior which should be allowed from a
> > > compliant monitor, I feel this is the right way to handle/WA this.  We
> > > may have to extend this to some other tests as well which will also
> > > get impacted due to these spurious hotplug events.
> > 
> > Yes, one more place would be the connector probing at test startup, which
> > should be retried if a hotplug uevent is detected (waiting for both uevents that a
> > long pulse can generate).
> 
> Yes, there is also a similar failure in alpha test we have seen:
> igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb - fail - Failed assertion: !mismatch || igt_skip_crc_compare
> 
> This also occurred due to the spurious interrupt only. Not sure if there is any other test which is affected.

In theory this sort of stuff should not cause a crc mismatch.
IIRC somebody (Maarten maybe?) made the crc interface supposedly
provide consistent crcs across modeset. So if we are seeing crc
change across a pure ->off->on modeset there is potentially a
bug in the driver.

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

* Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI link reset
  2020-05-12 17:16         ` Ville Syrjälä
@ 2020-05-13 10:23           ` Shankar, Uma
  0 siblings, 0 replies; 14+ messages in thread
From: Shankar, Uma @ 2020-05-13 10:23 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev



> -----Original Message-----
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Sent: Tuesday, May 12, 2020 10:47 PM
> To: Shankar, Uma <uma.shankar@intel.com>
> Cc: Deak, Imre <imre.deak@intel.com>; igt-dev@lists.freedesktop.org
> Subject: Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case of a DP/HDMI
> link reset
> 
> On Tue, May 12, 2020 at 05:07:09PM +0000, Shankar, Uma wrote:
> >
> >
> > > -----Original Message-----
> > > From: Imre Deak <imre.deak@intel.com>
> > > Sent: Tuesday, May 12, 2020 10:21 PM
> > > To: Shankar, Uma <uma.shankar@intel.com>
> > > Cc: igt-dev@lists.freedesktop.org
> > > Subject: Re: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case
> > > of a DP/HDMI link reset
> > >
> > > On Tue, May 12, 2020 at 06:11:08PM +0300, Shankar, Uma wrote:
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf
> > > > > Of Imre Deak
> > > > > Sent: Tuesday, May 12, 2020 12:39 AM
> > > > > To: igt-dev@lists.freedesktop.org
> > > > > Subject: [igt-dev] [PATCH v2] tests/kms_flip: Retry test in case
> > > > > of a DP/HDMI link reset
> > > > >
> > > > > At least an IIyama and LG monitor have a strange behaviour when
> > > > > waking from a power saving state and getting enabled with an
> > > > > otherwise
> > > successful modeset:
> > > > > after the modeset in ~2 sec they signal a bad link state, either
> > > > > due to a lost CR/EQ in case of DP or a lost scrambling/TMDS
> > > > > clock setting in case
> > > of HDMI link.
> > > > > In response the driver resets the link with either a
> > > > > link-retraining or a modeset, which in turn makes the test miss vblank/flip
> events and fail.
> > > > >
> > > > > Work around the above issue, by retrying the test once if the
> > > > > test detects after a failure that a link reset happened during
> > > > > the test and a corresponding hotplug uevent was sent by the driver.
> > > > >
> > > > > v2: Suspend the signal helper while waiting for a hotplug event, so the
> > > > >     wait will not get inerrupted/restarted in an endless loop.
> > > > >
> > > >
> > > > Though not sure that this is behavior which should be allowed from
> > > > a compliant monitor, I feel this is the right way to handle/WA
> > > > this.  We may have to extend this to some other tests as well
> > > > which will also get impacted due to these spurious hotplug events.
> > >
> > > Yes, one more place would be the connector probing at test startup,
> > > which should be retried if a hotplug uevent is detected (waiting for
> > > both uevents that a long pulse can generate).
> >
> > Yes, there is also a similar failure in alpha test we have seen:
> > igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb - fail - Failed
> > assertion: !mismatch || igt_skip_crc_compare
> >
> > This also occurred due to the spurious interrupt only. Not sure if there is any
> other test which is affected.
> 
> In theory this sort of stuff should not cause a crc mismatch.
> IIRC somebody (Maarten maybe?) made the crc interface supposedly provide
> consistent crcs across modeset. So if we are seeing crc change across a pure ->off-
> >on modeset there is potentially a bug in the driver.

Oh ok, based on the CI logs this happens very sporadically and every time it has reproduced, its
happening when this spurious interrupt is received. Will try to investigate the driver flows related
to alpha handling. 

One another thing in common I got was that when this happened, we also get :
<7> [926.239189] [drm:intel_crtc_set_crc_source [i915]] Trying to capture CRC while pipe is off
<7> [926.254878] i915 0000:03:00.0: [drm:drm_fb_helper_hotplug_event.part.15]

Regards,
Uma Shankar

> --
> Ville Syrjälä
> Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

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

end of thread, other threads:[~2020-05-13 10:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-11 18:25 [igt-dev] [PATCH i-g-t] tests/kms_flip: Retry test in case of a DP/HDMI link reset Imre Deak
2020-05-11 19:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2020-05-11 19:08 ` [igt-dev] [PATCH v2] " Imre Deak
2020-05-12 15:11   ` Shankar, Uma
2020-05-12 16:50     ` Imre Deak
2020-05-12 17:07       ` Shankar, Uma
2020-05-12 17:16         ` Ville Syrjälä
2020-05-13 10:23           ` Shankar, Uma
2020-05-11 20:27 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
2020-05-11 21:32   ` Imre Deak
2020-05-11 23:46     ` Vudum, Lakshminarayana
2020-05-11 23:28 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset Patchwork
2020-05-11 23:45 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip: Retry test in case of a DP/HDMI link reset (rev2) Patchwork
2020-05-12  4:40 ` [igt-dev] ✓ Fi.CI.IGT: " 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.