[Intel-gfx] [PATCH i-g-t] tests/kms_flip: fix spin_batch conversion
Daniel Vetter
daniel at ffwll.ch
Tue Aug 15 08:05:42 UTC 2017
On Mon, Aug 14, 2017 at 09:50:01PM +0100, Chris Wilson wrote:
> Quoting Daniel Vetter (2017-08-14 21:32:00)
> > The goal of these subtests was just to delay a kms operation a little
> > bit. The goal wasn't to
> > - spin until the operation was completed. That results in a gpu hang,
> > and gpu hangs need igt_hang for safety.
> > - complete it before the operation. That's just pointless.
> >
> > Fix it by using the timeout support.
> >
> > This was all broken in the initial conversation:
> >
> > commit 96ec8cb3b5ec1fc2927d6cff8e09930082301d7e
> > Author: Abdiel Janulgue <abdiel.janulgue at linux.intel.com>
> > Date: Sat Oct 29 01:01:05 2016 +0300
> >
> > igt/kms_flip: Use new igt_spin_batch
> >
> > Note that part of the damage was removed already in
>
> Ah no, that patch removed the timeouts! I remember there being
> set_timeout in there and was baffled to see them gone.
>
> Indeed, the breakage is
>
> > commit b0081ea9cb7d39234fd0fcc64dd56ed4f5d50b05
> > Author: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> > Date: Wed Aug 9 11:11:52 2017 +0200
> >
> > tests/kms_flip: Remove $engine-flip-vs-dpms/modeset
>
>
> due to
>
> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
> index ede5fd2b..ea860e19 100644
> --- a/tests/kms_flip.c
> +++ b/tests/kms_flip.c
> @@ -755,13 +755,8 @@ static unsigned int run_test_step(struct test_output *o)
> if (o->flags & TEST_MODESET)
> igt_assert(set_mode(o, o->fb_ids[o->current_fb_id], 0, 0) == 0);
>
> - if (o->flags & TEST_DPMS) {
> - if (spin_rcs)
> - igt_spin_batch_set_timeout(spin_rcs, NSEC_PER_SEC);
> - if (spin_bcs)
> - igt_spin_batch_set_timeout(spin_bcs, NSEC_PER_SEC);
> + if (o->flags & TEST_DPMS)
This doesn't fix the case where TEST_DPMS is not set. I seen hangs
everywhere, because we only stop the spinning _after_ the operation is
completed. The only way for the operation to complete is by a gpu reset,
and resetting a live spinner on snb blt is not a good idea (it kills the
box eventually).
And yes there's a a race with just setting a timeout, but we have other
checks that make sure an atomic flip doesn't take one full second. So I
don't think the race is relevant in practice for testing (because it would
indicate a broken kernel, and we catch those bugs already).
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the Intel-gfx
mailing list