From: Chris Wilson Date: Tue, 31 Mar 2020 11:48:52 +0000 (+0100) Subject: drm/i915: Defer kicking the tasklet until all rescheduling is complete X-Git-Tag: v5.8-rc1~194^2~18^2~81 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=86dbf52d26cce688ed45d8080f337aa42913ceaa;p=thirdparty%2Flinux.git drm/i915: Defer kicking the tasklet until all rescheduling is complete Since we may kick more than engine, and may kick each one a couple of times, coalesce the tasklet execution to the end. This also ensures that we have the chance to run the tasklet immediately after priority bumping. Signed-off-by: Chris Wilson Reviewed-by: Tvrtko Ursulin Link: https://patchwork.freedesktop.org/patch/msgid/20200331114852.11583-1-chris@chris-wilson.co.uk --- diff --git a/drivers/gpu/drm/i915/i915_scheduler.c b/drivers/gpu/drm/i915/i915_scheduler.c index 68b06a7ba667d..612185674b4e5 100644 --- a/drivers/gpu/drm/i915/i915_scheduler.c +++ b/drivers/gpu/drm/i915/i915_scheduler.c @@ -464,11 +464,15 @@ int i915_sched_node_add_dependency(struct i915_sched_node *node, if (!dep) return -ENOMEM; + local_bh_disable(); + if (!__i915_sched_node_add_dependency(node, signal, dep, I915_DEPENDENCY_EXTERNAL | I915_DEPENDENCY_ALLOC)) i915_dependency_free(dep); + local_bh_enable(); /* kick submission tasklet */ + return 0; }