[igt-dev] [PATCH i-g-t] tests/kms_big_fb: Add retry mechanism for async flip subtests

Ville Syrjälä ville.syrjala at linux.intel.com
Mon Oct 4 15:43:18 UTC 2021


On Mon, Oct 04, 2021 at 12:19:01PM +0300, Ville Syrjälä wrote:
> On Mon, Oct 04, 2021 at 02:26:29PM +0530, Karthik B S wrote:
> > Async flip subtests fail sporadically with CRC failure on CI.
> > This is expected as these tests are not run on highest priority by the
> > scheduler, but this creates noise on CI. Add retry mechanism to rerun
> > the test once if failure is seen.
> > 
> > Signed-off-by: Karthik B S <karthik.b.s at intel.com>
> > ---
> >  tests/i915/kms_big_fb.c | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c
> > index 308227c9..8c09f59e 100644
> > --- a/tests/i915/kms_big_fb.c
> > +++ b/tests/i915/kms_big_fb.c
> > @@ -481,6 +481,7 @@ max_hw_stride_async_flip_test(data_t *data)
> >  		       h = data->output->config.default_mode.vdisplay;
> >  	igt_plane_t *primary;
> >  	igt_crc_t compare_crc, async_crc;
> > +	bool retried = false;
> >  
> >  	igt_require(data->display.is_atomic);
> >  	igt_output_set_pipe(data->output, data->pipe);
> > @@ -513,6 +514,7 @@ max_hw_stride_async_flip_test(data_t *data)
> >  					  INTEL_PIPE_CRC_SOURCE_AUTO);
> >  	igt_pipe_crc_start(data->pipe_crc);
> >  
> > +retry:
> >  	igt_set_timeout(5, "Async pageflipping loop got stuck!\n");
> >  	for (int i = 0; i < 2; i++) {
> >  		igt_plane_set_fb(primary, &data->big_fb);
> > @@ -548,6 +550,13 @@ max_hw_stride_async_flip_test(data_t *data)
> >  		igt_assert_f(kmstest_get_vblank(data->drm_fd, data->pipe, 0) -
> >  			     startframe == 1, "lost frames\n");
> >  
> > +		/* Test is not running at real time priority, so allow one failure*/
> > +		if (!(igt_check_crc_equal(&compare_crc, &async_crc)^(i^1)) && !retried) {
> > +			retried = true;
> > +			igt_reset_timeout();
> > +			goto retry;
> > +		}
> > +
> 
> This test seems to entirely fit kms_big_fb in general. I don't
                     ^
		     not

is what I meant to write. Somewhat important small word.

> think kms_big_fb should be testing any timing sensitive stuff.
> 
> So I think we should change this to a form that follows the rest
> of kms_big_fb to validate that each page flip just presents the
> correct data on screen. The timing sensitive stuff is best left
> for kms_async_flip.
> 
> So this should maybe be something like: flip to a correctly sized
> temp fb with the wrong contents and change the plane src coordinates,
> and then async flip back to the correct fb and validate the
> correct data is now on screen.
> 
> Oh and the async flip test should not be limited to the
> max-hw-stride part. We should test that async flips do the
> right thing with gtt remapping as well.
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Ville Syrjälä
Intel


More information about the igt-dev mailing list