On Wed, Apr 11, 2018 at 11:13:56AM +0100, Chris Wilson wrote:
> In investigating the issue with having to force preemption within the
> executing ELSP[], we want to trigger preemption between all elements of
> that array. To that end, we issue a series of requests with different
> priorities to fill the in-flight ELSP[] and then demand preemption into
> the middle of that series. One can think of even more complicated
> reordering requirements of ELSP[], trying to switch between every
> possible combination of permutations. Rather than check all 2 billion
> combinations, be content with a few.
> 
> v2: Add a different pattern for queued requests. Not only do we need to
> inject a request into the middle of a single context with a queue of
> different priority contexts, but we also want a queue of different
> contexts, as they have different patterns of ELSP[] behaviour.
> 
> Signed-off-by: Chris Wilson <[email protected]>
> Cc: Mika Kuoppala <[email protected]>
> Cc: Michał Winiarski <[email protected]>
> ---
>  tests/gem_exec_schedule.c | 188 ++++++++++++++++++++++++++++++++++----
>  1 file changed, 169 insertions(+), 19 deletions(-)
> 
> diff --git a/tests/gem_exec_schedule.c b/tests/gem_exec_schedule.c
> index d2f040ab..6ff15b6e 100644
> --- a/tests/gem_exec_schedule.c
> +++ b/tests/gem_exec_schedule.c

[snip]

> @@ -981,12 +1117,26 @@ igt_main
>                                       igt_subtest_f("preempt-contexts-%s", 
> e->name)
>                                               preempt(fd, e->exec_id | 
> e->flags, NEW_CTX);
>  
> -                                     igt_subtest_f("preempt-other-%s", 
> e->name)
> -                                             preempt_other(fd, e->exec_id | 
> e->flags);
> -
>                                       igt_subtest_f("preempt-self-%s", 
> e->name)
>                                               preempt_self(fd, e->exec_id | 
> e->flags);
>  
> +                                     igt_subtest_f("preempt-other-%s", 
> e->name)
> +                                             preempt_other(fd, e->exec_id | 
> e->flags, 0);
> +
> +                                     igt_subtest_f("preempt-other-chain-%s", 
> e->name)
> +                                             preempt_other(fd, e->exec_id | 
> e->flags, CHAIN);
> +
> +                                     igt_subtest_f("preempt-queue-%s", 
> e->name)
> +                                             preempt_queue(fd, e->exec_id | 
> e->flags, 0);
> +
> +                                     igt_subtest_f("preempt-queue-chain-%s", 
> e->name)
> +                                             preempt_queue(fd, e->exec_id | 
> e->flags, CHAIN);
> +                                     igt_subtest_f("preempt-contexts-%s", 
> e->name)
> +                                             preempt_queue(fd, e->exec_id | 
> e->flags, CONTEXTS);

With preempt-queue-contexts.

Reviewed-by: Michał Winiarski <[email protected]>

-Michał

> +
> +                                     
> igt_subtest_f("preempt-contexts-chain-%s", e->name)
> +                                             preempt_queue(fd, e->exec_id | 
> e->flags, CONTEXTS | CHAIN);
> +
>                                       igt_subtest_group {
>                                               igt_hang_t hang;
>  
> -- 
> 2.17.0
> 
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to