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

Chris Wilson chris at chris-wilson.co.uk
Thu Jun 25 05:49:02 PDT 2015


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?

> +			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()

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

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list