]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: Note the addition of timeslicing to the pretend scheduler
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 10 Oct 2019 07:14:25 +0000 (08:14 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 11 Oct 2019 08:36:16 +0000 (09:36 +0100)
Since writing the comment that the scheduler is entirely passive, we've
added minimal timeslicing which adds the most primitive of active
elements (a timeout and reschedule).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191010071434.31195-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_scheduler_types.h

index aad81acba9dccad2b5702bd84abd5d3c852f65e1..d18e7055005424e67516e59f6a8a214a6978abf0 100644 (file)
@@ -49,6 +49,15 @@ struct i915_sched_attr {
  * DAG of each request, we are able to insert it into a sorted queue when it
  * is ready, and are able to reorder its portion of the graph to accommodate
  * dynamic priority changes.
+ *
+ * Ok, there is now one active element to the "scheduler" in the backends.
+ * We let a new context run for a small amount of time before re-evaluating
+ * the run order. As we re-evaluate, we maintain the strict ordering of
+ * dependencies, but attempt to rotate the active contexts (the current context
+ * is put to the back of its priority queue, then reshuffling its dependents).
+ * This provides minimal timeslicing and prevents a userspace hog (e.g.
+ * something waiting on a user semaphore [VkEvent]) from denying service to
+ * others.
  */
 struct i915_sched_node {
        struct list_head signalers_list; /* those before us, we depend upon */