[Intel-gfx] [PATCH i-g-t v2] tests/gem_ringfill: Add {render, blitter}-forked subtests.

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Thu Jun 25 06:23:43 PDT 2015


On to, 2015-06-25 at 13:49 +0100, Chris Wilson wrote:
> On Thu, Jun 25, 2015 at 03:04:44PM +0300, Joonas Lahtinen wrote:
> > Add forking subtests to gem_ringfill. Tests cause consistent GPU
> > hangs on SKL.
> > 
> > Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> > Signed-off-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89959
> > ---
> >  tests/gem_ringfill.c | 22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> > 
> > diff --git a/tests/gem_ringfill.c b/tests/gem_ringfill.c
> > index 85b01ea..1b93a03 100644
> > --- a/tests/gem_ringfill.c
> > +++ b/tests/gem_ringfill.c
> > @@ -241,6 +241,28 @@ igt_main
> >  	}
> >  	igt_stop_signal_helper();
> >  
> > +	igt_subtest("blitter-forked") {
> > +		igt_fork(child, 1) {
> 
> One child? Only a single child is required to provoke the bug? So what's
> the difference between calling check_ring() in the child and the parent?
> 

Well, it is the difference between GPU hang and no GPU hang :P It is
currently under investigation exactly why. Changing the batchbuffer
payload to NOOP stops hanging, but the subtest execution time drops from
a minute to a couple of seconds.

> > +			check_ring(bufmgr, batch, "blt", blt_copy);
> > +		}
> > +		igt_waitchildren();
> > +	}
> > +
> > +	/* Strictly only required on architectures with a separate BLT ring,
> > +	 * but lets stress everybody.
> > +	 */
> > +	igt_subtest("render-forked") {
> > +		igt_render_copyfunc_t copy;
> > +
> > +		copy = igt_get_render_copyfunc(batch->devid);
> > +		igt_require(copy);
> > +
> > +		igt_fork(child, 1) {
> > +			check_ring(bufmgr, batch, "render", copy);
> > +		}
> > +		igt_waitchildren();
> > +	}
> 
> One more for forked:
> igt_subtest("all-forked") {
> 	for_each_ring() {
> 		if (copy(ring)) == NULL)
> 			continue;
> 		igt_fork(child, N)
> 			check_ring(bufmgr, batch, name(ring), copy);
> 	}
> 	igt_waitchildren()
> 

This is something that could be added, yep. But I do not see it relevant
to the current patch, which is needed to better track down the root
cause for the SKL hangs.

Regards, Joonas

> Other tasks required for running forked is to display the interactive
> progress bar, bufmgr should be instantiated per child.
> -Chris
> 




More information about the Intel-gfx mailing list