From: Chris Wilson <chris@chris-wilson.co.uk>
To: intel-gfx@lists.freedesktop.org
Cc: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH i-g-t 2/2] i915/gem_exec_latency: Add another variant of waiter latency
Date: Tue, 4 Jun 2019 09:13:34 +0100 [thread overview]
Message-ID: <20190604081334.5925-2-chris@chris-wilson.co.uk> (raw)
In-Reply-To: <20190604081334.5925-1-chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/i915/gem_exec_latency.c | 81 +++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/tests/i915/gem_exec_latency.c b/tests/i915/gem_exec_latency.c
index e88fbbc6a..fd4ceb4d6 100644
--- a/tests/i915/gem_exec_latency.c
+++ b/tests/i915/gem_exec_latency.c
@@ -490,6 +490,83 @@ static void execution_latency(int i915, unsigned int ring, const char *name)
gem_close(i915, obj.handle);
}
+static void wakeup_latency(int i915, unsigned int ring, const char *name)
+{
+ struct drm_i915_gem_exec_object2 obj = {
+ .handle = gem_create(i915, 4095),
+ };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .buffer_count = 1,
+ .flags = ring | LOCAL_I915_EXEC_NO_RELOC | LOCAL_I915_EXEC_HANDLE_LUT,
+ };
+ const unsigned int mmio_base = 0x2000;
+ const unsigned int cs_timestamp = mmio_base + 0x358;
+ volatile uint32_t *timestamp;
+ struct igt_mean wakeup;
+ uint32_t *cs, *result;
+
+ timestamp =
+ (volatile uint32_t *)((volatile char *)igt_global_mmio + cs_timestamp);
+
+ obj.handle = gem_create(i915, 4096);
+ obj.flags = EXEC_OBJECT_PINNED;
+ result = gem_mmap__wc(i915, obj.handle, 0, 4096, PROT_WRITE);
+
+ cs = result;
+
+ *cs++ = 0x24 << 23 | 2; /* SRM */
+ *cs++ = cs_timestamp;
+ *cs++ = 4096 - 16 * 4;
+ *cs++ = 0;
+
+ *cs++ = MI_BATCH_BUFFER_START | 1;
+ *cs++ = 0;
+ *cs++ = 0;
+
+ *cs++ = 0x24 << 23 | 2; /* SRM */
+ *cs++ = cs_timestamp;
+ *cs++ = 4096 - 16 * 4 + 4;
+ *cs++ = 0;
+ *cs++ = 0xa << 23;
+
+ cs = result + 1024 - 16;
+
+ {
+ struct sched_param p = { .sched_priority = 99 };
+ sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK, &p);
+ }
+
+ igt_mean_init(&wakeup);
+ igt_until_timeout(2) {
+ uint32_t end;
+
+ igt_fork(child, 1) {
+ result[4] = MI_BATCH_BUFFER_START | 1;
+ cs[0] = 0;
+
+ gem_execbuf(i915, &execbuf);
+
+ while (!cs[0])
+ ;
+ result[4] = 0;
+ __sync_synchronize();
+ }
+ gem_sync(i915, obj.handle);
+ end = *timestamp;
+
+ igt_mean_add(&wakeup, (end - cs[1]) * rcs_clock);
+ igt_waitchildren();
+ }
+ igt_info("%s Wakeup latency: %.2f±%.2fms [%.2f, %.2f]\n", name,
+ 1e-6 * igt_mean_get(&wakeup),
+ 1e-6 * sqrt(igt_mean_get_variance(&wakeup)),
+ 1e-6 * wakeup.min, 1e-6 * wakeup.max);
+
+ munmap(result, 4096);
+ gem_close(i915, obj.handle);
+}
+
static void
__submit_spin(int fd, igt_spin_t *spin, unsigned int flags)
{
@@ -942,6 +1019,10 @@ igt_main
execution_latency(device,
e->exec_id | e->flags,
e->name);
+ igt_subtest_f("%s-wakeup-latency", e->name)
+ wakeup_latency(device,
+ e->exec_id | e->flags,
+ e->name);
igt_subtest_f("%s-live-dispatch-queued", e->name)
latency_on_ring(device,
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-06-04 8:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-04 8:13 [igt-dev] [PATCH i-g-t 1/2] i915/gem_exec_latency: Measure the latency of context switching Chris Wilson
2019-06-04 8:13 ` Chris Wilson [this message]
2019-06-04 10:11 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] " Patchwork
2019-06-04 16:26 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-06-05 15:04 ` [Intel-gfx] [PATCH i-g-t 1/2] " Mika Kuoppala
2019-06-06 16:16 ` [igt-dev] " Chris Wilson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190604081334.5925-2-chris@chris-wilson.co.uk \
--to=chris@chris-wilson.co.uk \
--cc=igt-dev@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox