[Intel-gfx] [PATCH i-g-t] i915/gem_map_gtt: Escape from slow forked GTT access

Mika Kuoppala mika.kuoppala at linux.intel.com
Tue Sep 24 12:44:54 UTC 2019


Chris Wilson <chris at chris-wilson.co.uk> writes:

> Beware the slithy t'oves.
>
> Forked GTT access on icl is notoriously slow, so rather than spend an
> eternity checking the whole object, check for a completion event after
> handling the pagefault. It's is the race of the pagefault vs reset that
> we care most about, and we expect the bug to result in the pagefault
> being blocked indefinitely, so checking afterwards does not reduce
> coverage.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
>  tests/i915/gem_mmap_gtt.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index 0428a1372..91da5a37b 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -602,6 +602,9 @@ test_hang(int fd)
>  
>  				gtt[0][x] = patterns[next_pattern];
>  				gtt[1][x] = patterns[next_pattern];
> +
> +				if (READ_ONCE(control->done))
> +					break;

The hang would have manifested itself on a previous loop
already.

So you could life the exit condition before the writes.
-Mika

>  			}
>  
>  			last_pattern = next_pattern;
> -- 
> 2.23.0


More information about the Intel-gfx mailing list