[igt-dev] [PATCH i-g-t v3] tests/kms_cursor_legacy: Wait for an extra vblank

Kahola, Mika mika.kahola at intel.com
Mon Apr 20 06:50:18 UTC 2020


> -----Original Message-----
> From: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> Sent: Friday, April 17, 2020 5:43 PM
> To: Kahola, Mika <mika.kahola at intel.com>; igt-dev at lists.freedesktop.org
> Subject: Re: [PATCH i-g-t v3] tests/kms_cursor_legacy: Wait for an extra vblank
> 
> I don't think that fifo underrun error on kbl has anything to do with your patch.
> 
> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>

Patch pushed. Thanks for the review!

> 
> On 16.4.2020 16.19, Mika Kahola wrote:
> > kms_cursor_legacy IGT subtest 2x-nonblocking-modeset-vs-cursor-atomic
> > is failing due to busyness while trying to do atomic commit. In case,
> > we are busy, let's just wait one extra vblank before continuing the
> > test.
> >
> > References: https://gitlab.freedesktop.org/drm/intel/issues/1062
> >
> > v2: Wait out for max 5 seconds for commit busyness (Juha-Pekka)
> > v3: Move igt_set_timeout() outside of the loop, remove wait for vblank (Juha-
> Pekka)
> >      Move routine that waits for -ebusy into a separate function
> >
> > Signed-off-by: Mika Kahola <mika.kahola at intel.com>
> > ---
> >   tests/kms_cursor_legacy.c | 22 +++++++++++++++-------
> >   1 file changed, 15 insertions(+), 7 deletions(-)
> >
> > diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
> > index d5f95b8d..ba66e1bd 100644
> > --- a/tests/kms_cursor_legacy.c
> > +++ b/tests/kms_cursor_legacy.c
> > @@ -852,6 +852,19 @@ static void
> nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
> >   	igt_remove_fb(display->drm_fd, &cursor_fb);
> >   }
> >
> > +static void wait_for_modeset(igt_display_t *display, unsigned flags, int
> timeout,
> > +			     const char *info)
> > +{
> > +	int ret;
> > +
> > +	igt_set_timeout(timeout, info);
> > +	do {
> > +		ret = igt_display_try_commit_atomic(display, flags, NULL);
> > +	} while (ret == -EBUSY);
> > +	igt_assert(!ret);
> > +	igt_reset_timeout();
> > +}
> > +
> >   static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
> modeset, bool atomic)
> >   {
> >   	struct drm_mode_cursor arg1[2], arg2[2]; @@ -927,7 +940,7 @@ static
> > void two_screens_flip_vs_cursor(igt_display_t *display, int nloops,
> > bool
> >
> >   		if (ret == -EBUSY) {
> >   			/* Force completion on both pipes, and generate event.
> */
> > -			igt_display_commit_atomic(display, flags, NULL);
> > +			wait_for_modeset(display, flags, 5, "Stuck with -
> EBUSY");
> >
> >   			while (nloops--) {
> >   				shared[1] = nloops & 1;
> > @@ -945,12 +958,7 @@ static void two_screens_flip_vs_cursor(igt_display_t
> *display, int nloops, bool
> >   				igt_output_set_pipe(output2, enabled ?
> PIPE_NONE : pipe2);
> >   				enabled = !enabled;
> >
> > -				igt_set_timeout(5, "Scheduling modeset\n");
> > -				do {
> > -					ret =
> igt_display_try_commit_atomic(display, flags, NULL);
> > -				} while (ret == -EBUSY);
> > -				igt_assert(!ret);
> > -				igt_reset_timeout();
> > +				wait_for_modeset(display, flags, 5, "Scheduling
> modeset");
> >   			}
> >
> >   			goto done;
> >



More information about the igt-dev mailing list