Quoting Chris Wilson (2018-06-19 13:49:16) > Apply a different sort of stress by timing how long it takes to sync a > second nop batch in the pipeline. We first start a spinner on the > engine, then when we know the GPU is active, we submit the second nop; > start timing as we then release the spinner and wait for the nop to > complete. > > As with every other gem_sync test, it serves two roles. The first is > that it checks that we do not miss a wakeup under common stressful > conditions (the more conditions we check, the happier we will be that > they do not occur in practice). And the second role it fulfils, is that > it provides a very crude estimate for how long it takes for a nop to > execute from a running start (we already have a complimentary estimate > for an idle start). > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> <SNIP> > +static void > +wakeup_ring(int fd, unsigned ring, int timeout) > +{ <SNIP> > + intel_detect_and_clear_missed_interrupts(fd); > + igt_fork(child, num_engines) { > + const uint32_t bbe = MI_BATCH_BUFFER_END; > + struct drm_i915_gem_exec_object2 object; > + struct drm_i915_gem_execbuffer2 execbuf; > + double end, this, elapsed, now; > + unsigned long cycles; > + uint32_t cmd; > + igt_spin_t *spin; > + > + memset(&object, 0, sizeof(object)); > + object.handle = gem_create(fd, 4096); > + gem_write(fd, object.handle, 0, &bbe, sizeof(bbe)); > + > + memset(&execbuf, 0, sizeof(execbuf)); > + execbuf.buffers_ptr = to_user_pointer(&object); > + execbuf.buffer_count = 1; > + execbuf.flags = engines[child % num_engines]; > + > + spin = __igt_spin_batch_new_poll(fd, 0, execbuf.flags); > + igt_assert(spin->running); > + cmd = *spin->batch; > + > + gem_execbuf(fd, &execbuf); > + > + igt_spin_batch_end(spin); > + gem_sync(fd, object.handle); > + > + end = gettime() + timeout; > + elapsed = 0; > + cycles = 0; > + do { > + *spin->batch = cmd; > + *spin->running = 0; igt_spin_batch_reset/resume/whatever... Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Regards, Joonas _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx