drm/i915/execlists: Minimalistic timeslicing
If we have multiple contexts of equal priority pending execution, activate a timer to demote the currently executing context in favour of the next in the queue when that timeslice expires. This enforces fairness between contexts (so long as they allow preemption -- forced preemption, in the future, will kick those who do not obey) and allows us to avoid userspace blocking forward progress with e.g. unbounded MI_SEMAPHORE_WAIT. For the starting point here, we use the jiffie as our timeslice so that we should be reasonably efficient wrt frequent CPU wakeups. Testcase: igt/gem_exec_scheduler/semaphore-resolve Signed-off-by:Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by:
Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190620142052.19311-2-chris@chris-wilson.co.uk
Showing
- drivers/gpu/drm/i915/gt/intel_engine_types.h 6 additions, 0 deletionsdrivers/gpu/drm/i915/gt/intel_engine_types.h
- drivers/gpu/drm/i915/gt/intel_lrc.c 116 additions, 0 deletionsdrivers/gpu/drm/i915/gt/intel_lrc.c
- drivers/gpu/drm/i915/gt/selftest_lrc.c 223 additions, 0 deletionsdrivers/gpu/drm/i915/gt/selftest_lrc.c
- drivers/gpu/drm/i915/i915_scheduler.c 1 addition, 0 deletionsdrivers/gpu/drm/i915/i915_scheduler.c
- drivers/gpu/drm/i915/i915_scheduler_types.h 1 addition, 0 deletionsdrivers/gpu/drm/i915/i915_scheduler_types.h
Loading
Please register or sign in to comment