[igt-dev] [PATCH i-g-t v2 2/2] tests/gem_eio: Add reset and unwedge stress testing
Chris Wilson
chris at chris-wilson.co.uk
Wed Apr 4 10:06:12 UTC 2018
Quoting Tvrtko Ursulin (2018-04-04 10:58:14)
>
> On 03/04/2018 19:34, Antonio Argenziano wrote:
> >
> >
> > On 03/04/18 11:24, Antonio Argenziano wrote:
> >>
> >>
> >> On 03/04/18 04:36, Tvrtko Ursulin wrote:
> >>> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >>>
> >>> Reset and unwedge stress testing is supposed to trigger wedging or
> >>> resets
> >>> at incovenient times and then re-use the context so either the
> >>> context or
> >>> driver tracking might get confused and break.
> >>>
> >>> v2:
> >>> * Renamed for more sensible naming.
> >>> * Added some comments to explain what the test is doing. (Chris
> >>> Wilson)
> >>>
> >>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >>> ---
> >>> tests/gem_eio.c | 74
> >>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >>> 1 file changed, 74 insertions(+)
> >>>
> >>> diff --git a/tests/gem_eio.c b/tests/gem_eio.c
> >>> index b7c5047f0816..9599e73db736 100644
> >>> --- a/tests/gem_eio.c
> >>> +++ b/tests/gem_eio.c
> >>> @@ -591,6 +591,74 @@ static void test_inflight_internal(int fd,
> >>> unsigned int wait)
> >>> close(fd);
> >>> }
> >>> +/*
> >>> + * Verify that we can submit and execute work after unwedging the GPU.
> >>> + */
> >>> +static void test_reset_stress(int fd, unsigned int flags)
> >>> +{
> >>> + uint32_t ctx0 = gem_context_create(fd);
> >>> +
> >>> + igt_until_timeout(5) {
> >>> + struct drm_i915_gem_execbuffer2 execbuf = { };
> >>> + struct drm_i915_gem_exec_object2 obj = { };
> >>> + uint32_t bbe = MI_BATCH_BUFFER_END;
> >>> + igt_spin_t *hang;
> >>> + unsigned int i;
> >>> + uint32_t ctx;
> >>> +
> >>> + gem_quiescent_gpu(fd);
> >>> +
> >>> + igt_require(i915_reset_control(flags & TEST_WEDGE ?
> >>> + false : true));
> >>> +
> >>> + ctx = context_create_safe(fd);
> >>> +
> >>> + /*
> >>> + * Start executing a spin batch with some queued batches
> >>> + * against a different context after it.
> >>> + */
> >>
> >> Aren't all batches queued on ctx0? Or is this a reference to the check
> >> on ctx you have later in the test.
>
> Yes, a mistake in comment text.
>
> >>> + hang = spin_sync(fd, ctx0, 0);
> >
> > I think you meant to send this^ on ctx.
>
> Why do you think so? Did you find a different or better way to trigger
> the bug this test is trying to hit?
You might need to explain that this test was trying to reproduce a
kernel bug around unwedging you found earlier, and instead managed to
find a similar one. ;)
-Chris
More information about the igt-dev
mailing list