[igt-dev] [RFC PATCH v2 1/3] tests/gem_exec_reloc: Don't filter out addresses on full PPGTT

Chris Wilson chris at chris-wilson.co.uk
Wed Oct 23 15:41:22 UTC 2019


Quoting Janusz Krzysztofik (2019-10-23 16:29:15)
> Commit a355b2d6eb42 ("igt/gem_exec_reloc: Filter out unavailable
> addresses for !ppgtt") introduced filtering of addresses possibly
> occupied by other users of shared GTT.  Unfortunately, that filtering
> is unconditional, no matter if running on old shared GTT or not.  When
> running on full (non-aliasing) PPGTT, that may result in errors other
> than those intended to be skipped over being silently ignored.
> 
> Skip over unavailable addresses only when not running on full PPGTT.
> 
> Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  tests/i915/gem_exec_reloc.c | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/tests/i915/gem_exec_reloc.c b/tests/i915/gem_exec_reloc.c
> index fdd9661d..f7fc0ea7 100644
> --- a/tests/i915/gem_exec_reloc.c
> +++ b/tests/i915/gem_exec_reloc.c
> @@ -539,12 +539,13 @@ static void basic_range(int fd, unsigned flags)
>                 obj[n].offset = (1ull << (i + 12)) - 4096;
>                 obj[n].offset = gen8_canonical_address(obj[n].offset);
>                 obj[n].flags = EXEC_OBJECT_PINNED | EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
> -               gem_write(fd, obj[n].handle, 0, &bbe, sizeof(bbe));
> -               execbuf.buffers_ptr = to_user_pointer(&obj[n]);
> -               execbuf.buffer_count = 1;
> -               if (__gem_execbuf(fd, &execbuf))
> -                       continue;
> -
> +               if (!gem_uses_full_ppgtt(fd)) {

Oh boy, I can think of an [unmentionable] instance where this isn't true
either.

It should be true indeed unless the kernel is interfering with the
user's GTT...
-Chris


More information about the igt-dev mailing list