]> Git Repo - linux.git/commit
drm/i915/execlists: Enable coarse preemption boundaries for gen8
authorChris Wilson <[email protected]>
Fri, 29 Mar 2019 13:40:24 +0000 (13:40 +0000)
committerChris Wilson <[email protected]>
Fri, 5 Apr 2019 10:00:28 +0000 (11:00 +0100)
commitbac24f59f45419a3853af2f58130cb82b7bdca64
tree75086637a30f103be6110014a734dc539a82a851
parentb66ea2c2cf59b80c38a14127fafb49fdf0df9180
drm/i915/execlists: Enable coarse preemption boundaries for gen8

When we introduced preemption, we chose to keep it disabled for gen8 as
supporting preemption inside GPGPU user batches required various w/a in
userspace. Since then, the desire to preempt long queues of requests
between batches (e.g. within busywaiting semaphores) has grown. So allow
arbitration within the busywaits and between requests, but disable
arbitration within user batches so that we can preempt between requests
and not risk breaking GPGPU.

However, since this preemption is much coarser and doesn't interfere
with userspace, we decline to include it amongst the scheduler
capabilities. (This is also required for us to skip over the preemption
selftests that expect to be able to preempt user batches.)

Michal suggested that we could perhaps allow preemption inside gen8
userspace batches if we can satisfy ourselves that the default
preemption settings are viable with existing userspace (principally
OpenCL which already should carry any known workaround). We could then
merge the two code paths back into one, even dropping the artifical
has-preemption device feature flag.

Testcase: igt/gem_exec_scheduler/semaphore-user
References: beecec901790 ("drm/i915/execlists: Preemption!")
Fixes: e88619646971 ("drm/i915: Use HW semaphores for inter-engine synchronisation on gen8+")
Signed-off-by: Chris Wilson <[email protected]>
Cc: Michal Winiarski <[email protected]>
Cc: Tvrtko Ursulin <[email protected]>
Reviewed-by: Michal Winiarski <[email protected]> #irc
Reviewed-by: Tvrtko Ursulin <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
drivers/gpu/drm/i915/i915_gem_context.c
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/selftests/intel_lrc.c
This page took 0.060491 seconds and 4 git commands to generate.