All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Ekstrand <jason@jlekstrand.net>
To: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
Cc: IGT GPU Tools <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [PATCH i-g-t 31/79] tests/i915/gem_ctx_switch: Convert to intel_ctx_t
Date: Fri, 18 Jun 2021 11:35:09 -0500	[thread overview]
Message-ID: <CAOFGe96uzYUAg+EXo-MOMcqS7k-xLht+rLvJ6+P1s-qf1VvGVg@mail.gmail.com> (raw)
In-Reply-To: <87h7hvepqu.wl-ashutosh.dixit@intel.com>

On Thu, Jun 17, 2021 at 11:55 PM Dixit, Ashutosh
<ashutosh.dixit@intel.com> wrote:
>
> On Thu, 17 Jun 2021 12:12:38 -0700, Jason Ekstrand wrote:
> >
> > @@ -127,12 +130,12 @@ static void single(int fd, uint32_t handle,
> >       shared = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
> >       igt_assert(shared != MAP_FAILED);
> >
> > -     for (n = 0; n < 64; n++) {
> > -             if (flags & QUEUE)
> > -                     contexts[n] = gem_queue_clone_with_engines(fd, 0);
> > -             else
> > -                     contexts[n] = gem_context_clone_with_engines(fd, 0);
> > -     }
> > +     cfg = *base_cfg;
> > +     if (flags & QUEUE)
> > +             cfg.vm = gem_vm_create(fd);
>
> As we did in gem_exec_whisper.c and gem_ctx_shared.c, do we also need to
> handle I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE here?

Sure

> > +static void all(int fd, uint32_t handle, const intel_ctx_cfg_t *base_cfg,
> > +             unsigned flags, int timeout)
> >  {
> >       struct drm_i915_gem_execbuffer2 execbuf;
> >       struct drm_i915_gem_exec_object2 obj[2];
> >       struct intel_engine_data engines = { };
> > -     uint32_t contexts[65];
> > +     intel_ctx_cfg_t cfg;
> > +     const intel_ctx_t *contexts[65];
> >       int n, qlen;
> >
> > -     engines = intel_init_engine_list(fd, 0);
> > +     engines = intel_engine_list_for_ctx_cfg(fd, base_cfg);
> >       igt_require(engines.nengines);
> >
> > -     for (n = 0; n < ARRAY_SIZE(contexts); n++) {
> > -             if (flags & QUEUE)
> > -                     contexts[n] = gem_queue_clone_with_engines(fd, 0);
> > -             else
> > -                     contexts[n] = gem_context_clone_with_engines(fd, 0);
> > -     }
> > +     cfg = *base_cfg;
> > +     if (flags & QUEUE)
> > +             cfg.vm = gem_vm_create(fd);
>
> I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE?

Sure

> > @@ -244,13 +249,13 @@ static void all(int fd, uint32_t handle, unsigned flags, int timeout)
> >       memset(&execbuf, 0, sizeof(execbuf));
> >       execbuf.buffers_ptr = to_user_pointer(obj + 1);
> >       execbuf.buffer_count = 1;
> > -     execbuf.rsvd1 = contexts[0];
> > +     execbuf.rsvd1 = contexts[0]->id;
> >       execbuf.flags |= I915_EXEC_HANDLE_LUT;
> >       execbuf.flags |= I915_EXEC_NO_RELOC;
> >       igt_require(__gem_execbuf(fd, &execbuf) == 0);
> >       gem_sync(fd, handle);
> >
> > -     qlen = measure_qlen(fd, &execbuf, &engines, timeout);
> > +     qlen = measure_qlen(fd, base_cfg, &execbuf, &engines, timeout);
>
> Because the cfg in the QUEUE case is different, should we just pass cfg
> instead of base_cfg here?

Sure.  I kind-of don't think it matters but, In the original, it used
gem_context_clone_with_engines(fd, 0) which is identical
gem_queue_create().  Let's go ahead and keep the VM sharing even
though I don't know why it's useful.

> > @@ -315,8 +322,8 @@ igt_main
> >       } phases[] = {
> >               { "", 0, NULL },
> >               { "-interruptible", INTERRUPTIBLE, NULL },
> > -             { "-queue", QUEUE, gem_has_queues },
> > -             { "-queue-interruptible", QUEUE | INTERRUPTIBLE, gem_has_queues },
> > +             { "-queue", QUEUE, gem_has_vm },
> > +             { "-queue-interruptible", QUEUE | INTERRUPTIBLE, gem_has_vm },
>
> My suggestion would be to resurrect gem_has_queues() here where
> gem_has_queues == gem_has_vm && gem_context_has_single_timeline.
>
> (In general maybe we can see if we can reinstate the queue concept itself
> where a queue is a context with a shared VM and shared timeline, though not
> sure about this because we now have context configs and flags. Anyway this
> is a general observation, nothing specifically needed in this patch.)

Yeah, I've thought about that.  One option would be to make a helper
that copies cfg and sets cfg.vm to get_context_param(ctx=0,
CONTEXT_PARAM_VM).  It's not a great solution and depends on the VM
getparam which may go away in future.

I think the real answer to a lot of these is actually softpin.  Most
of the tests where VM sharing really matters are tests for parallel
execution with the execlist scheduler which means they likely don't
apply on older hardware anyway.  If we fix a few addresses, then
there's no need for VM sharing because there won't be any
serialization due to relocations to begin with.

In any case, I can add VMs to contexts and smash SINGLE_TIMELINE to
keep behavior the same for now.

--Jason
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2021-06-18 16:35 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17 19:12 [igt-dev] [PATCH i-g-t 00/79] Stop depending on context mutation (v4) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 01/79] lib/i915/gem_submission_measure: Take an optional intel_ctx_cfg_t Jason Ekstrand
2021-06-18  3:42   ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 02/79] tests/i915/gem_exec_fence: Move the engine data into inter_engine_context (v3) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 03/79] tests/i915/gem_exec_fence: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 04/79] tests/i915/gem_exec_schedule: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 05/79] tests/i915/perf_pmu: Convert to intel_ctx_t (v3) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 06/79] tests/i915/gem_exec_nop: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 07/79] tests/i915/gem_exec_reloc: Convert to intel_ctx_t (v3) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 08/79] tests/i915/gem_busy: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 09/79] tests/i915/gem_ctx_isolation: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 10/79] tests/i915/gem_exec_async: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 11/79] tests/i915/sysfs_clients: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 12/79] tests/i915/gem_exec_fair: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 13/79] tests/i915/gem_spin_batch: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 14/79] tests/i915/gem_exec_store: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 15/79] tests/amdgpu/amd_prime: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 16/79] tests/i915/i915_hangman: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 17/79] tests/i915/gem_ringfill: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 18/79] tests/prime_busy: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 19/79] tests/prime_vgem: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 20/79] tests/gem_exec_whisper: " Jason Ekstrand
2021-06-17 20:48   ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 21/79] tests/i915/gem_ctx_exec: Stop cloning contexts in close_race Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 22/79] tests/i915/gem_ctx_exec: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 23/79] tests/i915/gem_exec_suspend: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 24/79] tests/i915/gem_sync: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 25/79] tests/i915/gem_userptr_blits: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 26/79] tests/i915/gem_wait: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 27/79] tests/i915/gem_request_retire: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 28/79] tests/i915/gem_ctx_shared: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 22:06   ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 29/79] tests/i915/gem_ctx_shared: Stop cloning contexts Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 30/79] tests/i915/gem_create: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 31/79] tests/i915/gem_ctx_switch: " Jason Ekstrand
2021-06-18  4:55   ` Dixit, Ashutosh
2021-06-18 16:35     ` Jason Ekstrand [this message]
2021-06-18 16:47   ` [igt-dev] [PATCH i-g-t] " Jason Ekstrand
2021-06-18 19:19     ` Dixit, Ashutosh
2021-06-21  3:48       ` Jason Ekstrand
2021-06-21  5:28         ` Dixit, Ashutosh
2021-06-23  5:31           ` Jason Ekstrand
2021-06-24  2:34             ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 32/79] tests/i915/gem_exec_parallel: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 33/79] tests/i915/gem_exec_latency: Convert to intel_ctx_t (v3) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 34/79] tests/i915/gem_watchdog: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-18  7:17   ` Dixit, Ashutosh
2021-06-18 16:22     ` Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 35/79] tests/i915/gem_shrink: Convert to intel_ctx_t (v4) Jason Ekstrand
2021-06-18  6:04   ` Zbigniew Kempczyński
2021-06-18 16:08     ` Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 36/79] tests/i915/gem_exec_params: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 37/79] tests/i915/gem_exec_gttfill: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 38/79] tests/i915/gem_exec_capture: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 39/79] tests/i915/gem_exec_create: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 40/79] tests/i915/gem_exec_await: Convert to intel_ctx_t (v2) Jason Ekstrand
2021-06-22  0:14   ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 41/79] tests/i915/gem_ctx_persistence: Drop the clone subtest Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 42/79] tests/i915/gem_ctx_persistence: Drop the engine replace subtests Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 43/79] tests/i915/gem_ctx_persistence: Convert to intel_ctx_t Jason Ekstrand
2021-06-22  1:51   ` Dixit, Ashutosh
2021-06-23  5:38     ` Jason Ekstrand
2021-06-24  1:56       ` Dixit, Ashutosh
2021-06-30 17:49         ` Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 44/79] tests/i915/module_load: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 45/79] tests/i915/pm_rc6_residency: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 46/79] tests/i915/gem_cs_tlb: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 47/79] tests/core_hotplug: " Jason Ekstrand
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 48/79] tests/i915/gem_exec_balancer: Stop cloning engines Jason Ekstrand
2021-06-25 22:26   ` Dixit, Ashutosh
2021-06-17 19:12 ` [igt-dev] [PATCH i-g-t 49/79] tests/i915/gem_exec_balancer: Don't reset engines on a context Jason Ekstrand
2021-06-29  3:53   ` Dixit, Ashutosh
2021-07-06  5:23     ` Dixit, Ashutosh
2021-07-07 14:24     ` Jason Ekstrand
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 50/79] tests/i915/gem_exec_balancer: Stop munging ctx0 engines Jason Ekstrand
2021-06-25 23:11   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 51/79] tests/i915/gem_exec_balancer: Drop bonded tests Jason Ekstrand
2021-06-25 21:25   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 52/79] lib/intel_ctx: Add load balancing support (v2) Jason Ekstrand
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 53/79] tests/i915/gem_exec_balancer: Convert to intel_ctx_t Jason Ekstrand
2021-06-28 21:23   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 54/79] tests/i915/gem_exec_endless: Stop munging ctx0 engines Jason Ekstrand
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 55/79] lib/i915/submission: Rework gem_test_all_engines to use intel_ctx_t Jason Ekstrand
2021-06-18  1:16   ` Dixit, Ashutosh
2021-06-18 16:03     ` Jason Ekstrand
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 56/79] lib/i915: Require a context config in gem_submission_measure Jason Ekstrand
2021-06-18  3:44   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 57/79] tests/i915/gem_ctx_engines: Rework execute-one* Jason Ekstrand
2021-06-23  1:14   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 58/79] tests/i915/gem_ctx_engines: Use better engine iteration Jason Ekstrand
2021-06-22 21:47   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 59/79] tests/i915/gem_ctx_engines: Drop the idempotent subtest Jason Ekstrand
2021-06-22 19:35   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 60/79] tests/i915/gem_ctx_create: Convert benchmarks to intel_ctx_t Jason Ekstrand
2021-06-22  3:30   ` Dixit, Ashutosh
2021-06-23  6:09     ` Jason Ekstrand
2021-06-24  2:07       ` Dixit, Ashutosh
2021-07-07 13:51         ` Jason Ekstrand
2021-07-08  6:23       ` Zbigniew Kempczyński
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 61/79] tests/i915/gem_vm_create: Delete destroy racing tests Jason Ekstrand
2021-06-22  2:07   ` Dixit, Ashutosh
2021-06-17 19:14 ` [igt-dev] [PATCH i-g-t 62/79] tests/i915/gem_vm_create: Use intel_ctx_t in the execbuf test Jason Ekstrand
2021-06-22  2:17   ` Dixit, Ashutosh
2021-06-23  5:43     ` Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 63/79] tests/i915/sysfs: Convert to intel_ctx_t Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 64/79] tests/i915/gem_workarounds: " Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 65/79] lib/i915/gem_context: Delete all the context clone/copy stuff Jason Ekstrand
2021-06-28 20:16   ` Dixit, Ashutosh
2021-06-30 18:00     ` Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 66/79] tests/i915/gem_ctx_engines: Delete the libapi subtest Jason Ekstrand
2021-06-22  2:24   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 67/79] lib/igt_dummyload: Stop supporting ALL_ENGINES without an intel_ctx_t Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 68/79] lib/i915/gem_engine_topology: Delete the old physical engine iterators Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 69/79] tests/i915/gem_mmap_gtt: Convert to intel_ctx_t Jason Ekstrand
2021-06-22  2:33   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 70/79] igt/dummyload: Require an intel_ctx_t for POLL_RUN and !ALL_ENGINES Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 71/79] lib/i915: Rework engine API availability checks (v2) Jason Ekstrand
2021-06-28 19:56   ` Dixit, Ashutosh
2021-06-30 17:57     ` Jason Ekstrand
2021-06-30 21:31       ` Dixit, Ashutosh
2021-07-07 14:27         ` Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 72/79] lib/intel_bb: Remove intel_bb_assign_vm and tests (v2) Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 73/79] tests/i915/gem_ctx_param: Stop setting VMs on old contexts Jason Ekstrand
2021-06-23  3:02   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 74/79] tests/i915/gen9_exec_parse: Convert to intel_ctx_t Jason Ekstrand
2021-06-22  2:56   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 75/79] tests/i915/gem_ctx_param: Add tests for recently removed params Jason Ekstrand
2021-06-23  3:18   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 76/79] tests/i915/gem_ctx_param: Add a couple invalid PARAM_VM cases Jason Ekstrand
2021-06-23  3:10   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 77/79] tests/i915/gem_ctx_engines: Fix the invalid subtest for the new rules Jason Ekstrand
2021-06-23  0:04   ` Dixit, Ashutosh
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 78/79] tests/i915/gem_exec_balancer: Fix invalid-balancer for the set-once rule Jason Ekstrand
2021-06-26  0:48   ` Dixit, Ashutosh
2021-06-30 17:43     ` Jason Ekstrand
2021-06-17 19:15 ` [igt-dev] [PATCH i-g-t 79/79] tests/i915/gem_exec_balancer: Add a test for combind balancing and bonding (v2) Jason Ekstrand
2021-06-26  1:52   ` Dixit, Ashutosh
2021-06-17 20:01 ` [igt-dev] ✓ Fi.CI.BAT: success for Stop depending on context mutation (rev12) Patchwork
2021-06-17 21:06 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2021-06-18 18:45 ` [igt-dev] ✓ Fi.CI.BAT: success for Stop depending on context mutation (rev13) Patchwork
2021-06-18 21:31 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAOFGe96uzYUAg+EXo-MOMcqS7k-xLht+rLvJ6+P1s-qf1VvGVg@mail.gmail.com \
    --to=jason@jlekstrand.net \
    --cc=ashutosh.dixit@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.