[igt-dev] [PATCH igt] igt/gem_ctx_isolation: Reset a scratch context
Chris Wilson
chris at chris-wilson.co.uk
Tue Mar 27 13:52:20 UTC 2018
Quoting Chris Wilson (2018-03-27 14:48:43)
> If we inject a reset into the target context, there is a risk that the
> register state is never saved back to memory. The exact interaction
> between reset, the context image and the precise timing of our execution
> are not well defined. Since we cannot ensure that the context image
> remains valid, force a context switch prior to the reset.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105270
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105457
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105545
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
> tests/gem_ctx_isolation.c | 28 +++++++++++++++++++++++++++-
> 1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/tests/gem_ctx_isolation.c b/tests/gem_ctx_isolation.c
> index d8109aa0..4968e367 100644
> --- a/tests/gem_ctx_isolation.c
> +++ b/tests/gem_ctx_isolation.c
> @@ -522,6 +522,32 @@ static void isolation(int fd,
> #define S4 (4 << 8)
> #define SLEEP_MASK (0xf << 8)
>
> +static void inject_reset_context(int fd, unsigned int engine)
> +{
> + igt_spin_t *spin;
> + uint32_t ctx;
> +
> + /*
> + * Force a context switch before triggering the reset, or else
> + * we risk corrupting the target context and we can't blame the
> + * HW for screwing up if the context was already broken.
> + */
> +
> + ctx = gem_context_create(fd);
> + if (gem_can_store_dword(fd, engine)) {
> + spin = __igt_spin_batch_new_poll(fd, ctx, engine);
> + igt_spin_busywait_until_running(spin);
> + } else {
> + spin = __igt_spin_batch_new(fd, ctx, engine, 0);
> + usleep(1000); /* better than nothing */
> + }
Tvrtko, maybe we want igt_spin_batch_run()? Not sure though, so far we
have an example where you need precise control and a couple of examples
where we just want a running spinner.
-Chris
More information about the igt-dev
mailing list