Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm
@ 2018-02-21 12:10 Chris Wilson
  2018-02-21 13:00 ` Tvrtko Ursulin
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Chris Wilson @ 2018-02-21 12:10 UTC (permalink / raw)
  To: intel-gfx; +Cc: igt-dev, Tvrtko Ursulin

Convert the busy pwm from using a single calibration pass with a fixed
target into a self-correcting pwm that tries to adjust how long to sleep
on each pwm in order to converge at the target busy %%.

Being self-correcting, it should fare better against the more variable
systems CI presents.

v2: Be fair and equally strict for low/high busy %%
v3: target_idle_us and calculate expected from timing of each individual pass

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105157
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 tests/perf_pmu.c | 74 ++++++++++++++++++++++++++------------------------------
 1 file changed, 34 insertions(+), 40 deletions(-)

diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
index 7fab73e2..98d8dbff 100644
--- a/tests/perf_pmu.c
+++ b/tests/perf_pmu.c
@@ -1422,9 +1422,10 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
 				busy_us / 100) / target_busy_pct;
 	unsigned long pwm_calibration_us;
 	unsigned long test_us;
-	double busy_r;
+	double busy_r, expected;
 	uint64_t val[2];
 	uint64_t ts[2];
+	int link[2];
 	int fd;
 
 	/* Sampling platforms cannot reach the high accuracy criteria. */
@@ -1450,14 +1451,16 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
 	assert_within_epsilon((double)busy_us / (busy_us + idle_us),
 				(double)target_busy_pct / 100.0, tolerance);
 
+	igt_assert(pipe(link) == 0);
+
 	/* Emit PWM pattern on the engine from a child. */
 	igt_fork(child, 1) {
 		struct sched_param rt = { .sched_priority = 99 };
-		const unsigned long timeout[] = { pwm_calibration_us * 1000,
-						  test_us * 2 * 1000 };
-		unsigned long sleep_busy = busy_us;
-		unsigned long sleep_idle = idle_us;
+		const unsigned long timeout[] = {
+			pwm_calibration_us * 1000, test_us * 2 * 1000
+		};
 		struct drm_i915_gem_exec_object2 obj = {};
+		uint64_t total_busy_ns = 0, total_idle_ns = 0;
 		igt_spin_t *spin;
 		int ret;
 
@@ -1478,76 +1481,67 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
 
 		/* 1st pass is calibration, second pass is the test. */
 		for (int pass = 0; pass < ARRAY_SIZE(timeout); pass++) {
-			unsigned long busy_ns = 0, idle_ns = 0;
+			uint64_t busy_ns = -total_busy_ns;
+			uint64_t idle_ns = -total_idle_ns;
 			struct timespec test_start = { };
-			unsigned long loops = 0;
-			double err_busy, err_idle;
 
 			igt_nsec_elapsed(&test_start);
 			do {
 				struct timespec t_busy = { };
+				unsigned int target_idle_us;
 
 				igt_nsec_elapsed(&t_busy);
 
 				/* Restart the spinbatch. */
 				__rearm_spin_batch(spin);
 				__submit_spin_batch(gem_fd, &obj, e);
-				measured_usleep(sleep_busy);
+				measured_usleep(busy_us);
 				igt_spin_batch_end(spin);
 				gem_sync(gem_fd, obj.handle);
 
-				busy_ns += igt_nsec_elapsed(&t_busy);
+				total_busy_ns += igt_nsec_elapsed(&t_busy);
 
-				idle_ns += measured_usleep(sleep_idle);
-
-				loops++;
+				target_idle_us =
+					(100 * total_busy_ns / target_busy_pct - (total_busy_ns + total_idle_ns)) / 1000;
+				total_idle_ns += measured_usleep(target_idle_us);
 			} while (igt_nsec_elapsed(&test_start) < timeout[pass]);
 
-			busy_ns = div_round_up(busy_ns, loops);
-			idle_ns = div_round_up(idle_ns, loops);
-
-			err_busy = __error(busy_ns / 1000, busy_us);
-			err_idle = __error(idle_ns / 1000, idle_us);
-
-			igt_info("%u: busy %lu/%lu %.2f%%, idle %lu/%lu %.2f%%\n",
-				 pass,
-				 busy_ns / 1000, busy_us, err_busy,
-				 idle_ns / 1000, idle_us, err_idle);
-
-			if (pass == 0) {
-				sleep_busy = (double)busy_us -
-					     (double)busy_us * err_busy / 100.0;
-				sleep_idle = (double)idle_us -
-					     (double)idle_us * err_idle / 100.0;
-				igt_info("calibrated sleeps ratio %.2f%% (%lu/%lu)\n",
-					 (double)sleep_busy /
-					 (sleep_busy + sleep_idle) * 100.0,
-					 sleep_busy, sleep_idle);
-			}
+			busy_ns += total_busy_ns;
+			idle_ns += total_idle_ns;
+
+			expected = (double)busy_ns / (busy_ns + idle_ns);
+			igt_info("%u: busy %luus, idle %luus: %.2f%% (target: %lu%%)\n",
+				 pass, busy_ns / 1000, idle_ns / 1000,
+				 100 * expected, target_busy_pct);
+			write(link[1], &expected, sizeof(expected));
 		}
 
 		igt_spin_batch_free(gem_fd, spin);
 	}
 
 	/* Let the child run. */
-	usleep(pwm_calibration_us * 2);
+	read(link[0], &expected, sizeof(expected));
+	assert_within_epsilon(expected, target_busy_pct/100., 0.05);
 
 	/* Collect engine busyness for an interesting part of child runtime. */
 	fd = open_pmu(I915_PMU_ENGINE_BUSY(e->class, e->instance));
 	val[0] = __pmu_read_single(fd, &ts[0]);
-	usleep(test_us / 2);
+	read(link[0], &expected, sizeof(expected));
 	val[1] = __pmu_read_single(fd, &ts[1]);
 	close(fd);
 
+	close(link[1]);
+	close(link[0]);
+
 	igt_waitchildren();
 
 	busy_r = (double)(val[1] - val[0]) / (ts[1] - ts[0]);
 
-	igt_info("error=%.2f%% (%.2f%% vs %lu%%)\n",
-		 __error(busy_r, target_busy_pct / 100.0),
-		 busy_r * 100.0, target_busy_pct);
+	igt_info("error=%.2f%% (%.2f%% vs %.2f%%)\n",
+		 __error(busy_r, expected), 100 * busy_r, 100 * expected);
 
-	assert_within_epsilon(busy_r, (double)target_busy_pct / 100.0, 0.15);
+	assert_within_epsilon(busy_r, expected, 0.15);
+	assert_within_epsilon(1 - busy_r, 1 - expected, 0.15);
 }
 
 igt_main
-- 
2.16.1

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

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

* Re: [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm
  2018-02-21 12:10 [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm Chris Wilson
@ 2018-02-21 13:00 ` Tvrtko Ursulin
  2018-02-21 17:37 ` [igt-dev] ✓ Fi.CI.BAT: success for igt/perf_pmu: Use a self-correcting busy pwm (rev3) Patchwork
  2018-02-21 22:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Tvrtko Ursulin @ 2018-02-21 13:00 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx; +Cc: igt-dev, Tvrtko Ursulin


On 21/02/2018 12:10, Chris Wilson wrote:
> Convert the busy pwm from using a single calibration pass with a fixed
> target into a self-correcting pwm that tries to adjust how long to sleep
> on each pwm in order to converge at the target busy %%.
> 
> Being self-correcting, it should fare better against the more variable
> systems CI presents.
> 
> v2: Be fair and equally strict for low/high busy %%
> v3: target_idle_us and calculate expected from timing of each individual pass
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105157
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   tests/perf_pmu.c | 74 ++++++++++++++++++++++++++------------------------------
>   1 file changed, 34 insertions(+), 40 deletions(-)
> 
> diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
> index 7fab73e2..98d8dbff 100644
> --- a/tests/perf_pmu.c
> +++ b/tests/perf_pmu.c
> @@ -1422,9 +1422,10 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
>   				busy_us / 100) / target_busy_pct;
>   	unsigned long pwm_calibration_us;
>   	unsigned long test_us;
> -	double busy_r;
> +	double busy_r, expected;
>   	uint64_t val[2];
>   	uint64_t ts[2];
> +	int link[2];
>   	int fd;
>   
>   	/* Sampling platforms cannot reach the high accuracy criteria. */
> @@ -1450,14 +1451,16 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
>   	assert_within_epsilon((double)busy_us / (busy_us + idle_us),
>   				(double)target_busy_pct / 100.0, tolerance);
>   
> +	igt_assert(pipe(link) == 0);
> +
>   	/* Emit PWM pattern on the engine from a child. */
>   	igt_fork(child, 1) {
>   		struct sched_param rt = { .sched_priority = 99 };
> -		const unsigned long timeout[] = { pwm_calibration_us * 1000,
> -						  test_us * 2 * 1000 };
> -		unsigned long sleep_busy = busy_us;
> -		unsigned long sleep_idle = idle_us;
> +		const unsigned long timeout[] = {
> +			pwm_calibration_us * 1000, test_us * 2 * 1000
> +		};
>   		struct drm_i915_gem_exec_object2 obj = {};
> +		uint64_t total_busy_ns = 0, total_idle_ns = 0;
>   		igt_spin_t *spin;
>   		int ret;
>   
> @@ -1478,76 +1481,67 @@ accuracy(int gem_fd, const struct intel_execution_engine2 *e,
>   
>   		/* 1st pass is calibration, second pass is the test. */
>   		for (int pass = 0; pass < ARRAY_SIZE(timeout); pass++) {
> -			unsigned long busy_ns = 0, idle_ns = 0;
> +			uint64_t busy_ns = -total_busy_ns;
> +			uint64_t idle_ns = -total_idle_ns;
>   			struct timespec test_start = { };
> -			unsigned long loops = 0;
> -			double err_busy, err_idle;
>   
>   			igt_nsec_elapsed(&test_start);
>   			do {
>   				struct timespec t_busy = { };
> +				unsigned int target_idle_us;
>   
>   				igt_nsec_elapsed(&t_busy);
>   
>   				/* Restart the spinbatch. */
>   				__rearm_spin_batch(spin);
>   				__submit_spin_batch(gem_fd, &obj, e);
> -				measured_usleep(sleep_busy);
> +				measured_usleep(busy_us);
>   				igt_spin_batch_end(spin);
>   				gem_sync(gem_fd, obj.handle);
>   
> -				busy_ns += igt_nsec_elapsed(&t_busy);
> +				total_busy_ns += igt_nsec_elapsed(&t_busy);
>   
> -				idle_ns += measured_usleep(sleep_idle);
> -
> -				loops++;
> +				target_idle_us =
> +					(100 * total_busy_ns / target_busy_pct - (total_busy_ns + total_idle_ns)) / 1000;
> +				total_idle_ns += measured_usleep(target_idle_us);
>   			} while (igt_nsec_elapsed(&test_start) < timeout[pass]);
>   
> -			busy_ns = div_round_up(busy_ns, loops);
> -			idle_ns = div_round_up(idle_ns, loops);
> -
> -			err_busy = __error(busy_ns / 1000, busy_us);
> -			err_idle = __error(idle_ns / 1000, idle_us);
> -
> -			igt_info("%u: busy %lu/%lu %.2f%%, idle %lu/%lu %.2f%%\n",
> -				 pass,
> -				 busy_ns / 1000, busy_us, err_busy,
> -				 idle_ns / 1000, idle_us, err_idle);
> -
> -			if (pass == 0) {
> -				sleep_busy = (double)busy_us -
> -					     (double)busy_us * err_busy / 100.0;
> -				sleep_idle = (double)idle_us -
> -					     (double)idle_us * err_idle / 100.0;
> -				igt_info("calibrated sleeps ratio %.2f%% (%lu/%lu)\n",
> -					 (double)sleep_busy /
> -					 (sleep_busy + sleep_idle) * 100.0,
> -					 sleep_busy, sleep_idle);
> -			}
> +			busy_ns += total_busy_ns;
> +			idle_ns += total_idle_ns;
> +
> +			expected = (double)busy_ns / (busy_ns + idle_ns);
> +			igt_info("%u: busy %luus, idle %luus: %.2f%% (target: %lu%%)\n",
> +				 pass, busy_ns / 1000, idle_ns / 1000,
> +				 100 * expected, target_busy_pct);
> +			write(link[1], &expected, sizeof(expected));
>   		}
>   
>   		igt_spin_batch_free(gem_fd, spin);
>   	}
>   
>   	/* Let the child run. */
> -	usleep(pwm_calibration_us * 2);
> +	read(link[0], &expected, sizeof(expected));
> +	assert_within_epsilon(expected, target_busy_pct/100., 0.05);
>   
>   	/* Collect engine busyness for an interesting part of child runtime. */
>   	fd = open_pmu(I915_PMU_ENGINE_BUSY(e->class, e->instance));
>   	val[0] = __pmu_read_single(fd, &ts[0]);
> -	usleep(test_us / 2);
> +	read(link[0], &expected, sizeof(expected));
>   	val[1] = __pmu_read_single(fd, &ts[1]);
>   	close(fd);
>   
> +	close(link[1]);
> +	close(link[0]);
> +
>   	igt_waitchildren();
>   
>   	busy_r = (double)(val[1] - val[0]) / (ts[1] - ts[0]);
>   
> -	igt_info("error=%.2f%% (%.2f%% vs %lu%%)\n",
> -		 __error(busy_r, target_busy_pct / 100.0),
> -		 busy_r * 100.0, target_busy_pct);
> +	igt_info("error=%.2f%% (%.2f%% vs %.2f%%)\n",
> +		 __error(busy_r, expected), 100 * busy_r, 100 * expected);
>   
> -	assert_within_epsilon(busy_r, (double)target_busy_pct / 100.0, 0.15);
> +	assert_within_epsilon(busy_r, expected, 0.15);
> +	assert_within_epsilon(1 - busy_r, 1 - expected, 0.15);
>   }
>   
>   igt_main
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

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

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

* [igt-dev] ✓ Fi.CI.BAT: success for igt/perf_pmu: Use a self-correcting busy pwm (rev3)
  2018-02-21 12:10 [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm Chris Wilson
  2018-02-21 13:00 ` Tvrtko Ursulin
@ 2018-02-21 17:37 ` Patchwork
  2018-02-21 22:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2018-02-21 17:37 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev

== Series Details ==

Series: igt/perf_pmu: Use a self-correcting busy pwm (rev3)
URL   : https://patchwork.freedesktop.org/series/38590/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
960e55a87d7b7d7385063e37cc9f281df2be8037 igt/gem_ctx_isolation: Check isolation of registers between contexts

with latest DRM-Tip kernel build CI_DRM_3816
42d073db2a85 drm-tip: 2018y-02m-21d-14h-03m-58s UTC integration manifest

No testlist changes.

Test gem_mmap_gtt:
        Subgroup basic-small-bo-tiledx:
                pass       -> FAIL       (fi-gdg-551) fdo#102575
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-a:
                fail       -> PASS       (fi-ivb-3520m)
        Subgroup suspend-read-crc-pipe-b:
                incomplete -> PASS       (fi-snb-2520m) fdo#103713
                fail       -> PASS       (fi-ivb-3520m)
        Subgroup suspend-read-crc-pipe-c:
                fail       -> PASS       (fi-ivb-3520m)

fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:416s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:435s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:375s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:495s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:285s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:476s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:481s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:477s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:458s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:570s
fi-elk-e7500     total:288  pass:229  dwarn:0   dfail:0   fail:0   skip:59  time:415s
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:285s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:506s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:385s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:410s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:452s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:413s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:449s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:493s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:454s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:494s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:588s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:428s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:500s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:526s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:489s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:468s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:407s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:431s
fi-snb-2520m     total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:525s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:396s

== Logs ==

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for igt/perf_pmu: Use a self-correcting busy pwm (rev3)
  2018-02-21 12:10 [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm Chris Wilson
  2018-02-21 13:00 ` Tvrtko Ursulin
  2018-02-21 17:37 ` [igt-dev] ✓ Fi.CI.BAT: success for igt/perf_pmu: Use a self-correcting busy pwm (rev3) Patchwork
@ 2018-02-21 22:43 ` Patchwork
  2 siblings, 0 replies; 4+ messages in thread
From: Patchwork @ 2018-02-21 22:43 UTC (permalink / raw)
  To: Chris Wilson; +Cc: igt-dev

== Series Details ==

Series: igt/perf_pmu: Use a self-correcting busy pwm (rev3)
URL   : https://patchwork.freedesktop.org/series/38590/
State : success

== Summary ==

Test kms_vblank:
        Subgroup pipe-b-wait-busy-hang:
                skip       -> PASS       (shard-snb)
Test kms_flip:
        Subgroup flip-vs-panning-vs-hang-interruptible:
                pass       -> DMESG-WARN (shard-snb) fdo#103821
        Subgroup 2x-flip-vs-absolute-wf_vblank-interruptible:
                fail       -> PASS       (shard-hsw) fdo#100368 +2
        Subgroup modeset-vs-vblank-race-interruptible:
                fail       -> PASS       (shard-apl) fdo#103060
Test kms_rotation_crc:
        Subgroup sprite-rotation-180:
                fail       -> PASS       (shard-snb) fdo#103925 +1
Test perf:
        Subgroup oa-exponents:
                pass       -> INCOMPLETE (shard-apl) fdo#102254
Test kms_sysfs_edid_timing:
                pass       -> WARN       (shard-apl) fdo#100047
Test kms_atomic_transition:
        Subgroup 1x-modeset-transitions-nonblocking-fencing:
                fail       -> PASS       (shard-apl) fdo#103207
Test kms_pipe_crc_basic:
        Subgroup read-crc-pipe-c-frame-sequence:
                fail       -> PASS       (shard-apl) fdo#103481
Test kms_plane_multiple:
        Subgroup legacy-pipe-b-tiling-none:
                skip       -> PASS       (shard-snb)

fdo#103821 https://bugs.freedesktop.org/show_bug.cgi?id=103821
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
fdo#102254 https://bugs.freedesktop.org/show_bug.cgi?id=102254
fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#103207 https://bugs.freedesktop.org/show_bug.cgi?id=103207
fdo#103481 https://bugs.freedesktop.org/show_bug.cgi?id=103481

shard-apl        total:3333 pass:1751 dwarn:1   dfail:0   fail:11  skip:1567 time:11615s
shard-hsw        total:3465 pass:1767 dwarn:1   dfail:0   fail:3   skip:1693 time:11626s
shard-snb        total:3465 pass:1356 dwarn:2   dfail:0   fail:3   skip:2104 time:6611s

== Logs ==

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

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

end of thread, other threads:[~2018-02-21 22:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-21 12:10 [igt-dev] [PATCH igt v3] igt/perf_pmu: Use a self-correcting busy pwm Chris Wilson
2018-02-21 13:00 ` Tvrtko Ursulin
2018-02-21 17:37 ` [igt-dev] ✓ Fi.CI.BAT: success for igt/perf_pmu: Use a self-correcting busy pwm (rev3) Patchwork
2018-02-21 22:43 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox