Commit edee52c9 authored by Chris Wilson's avatar Chris Wilson

drm/i915/gt: Delay release of engine-pm after last retirement

Keep the engine-pm awake until the next jiffie, to avoid immediate
ping-pong under moderate load. (Forcing the idle barrier excerbates the
moderate load, dramatically increasing the driver overhead.) On the
other hand, delaying the idle-barrier slightly incurs longer rc6-off
and so more power consumption.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/848Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200323092841.22240-4-chris@chris-wilson.co.uk
parent e9037e7f
...@@ -350,7 +350,7 @@ void intel_context_enter_engine(struct intel_context *ce) ...@@ -350,7 +350,7 @@ void intel_context_enter_engine(struct intel_context *ce)
void intel_context_exit_engine(struct intel_context *ce) void intel_context_exit_engine(struct intel_context *ce)
{ {
intel_timeline_exit(ce->timeline); intel_timeline_exit(ce->timeline);
intel_engine_pm_put(ce->engine); intel_engine_pm_put_delay(ce->engine, 1);
} }
int intel_context_prepare_remote_request(struct intel_context *ce, int intel_context_prepare_remote_request(struct intel_context *ce,
......
...@@ -818,7 +818,7 @@ void i915_active_acquire_barrier(struct i915_active *ref) ...@@ -818,7 +818,7 @@ void i915_active_acquire_barrier(struct i915_active *ref)
GEM_BUG_ON(!intel_engine_pm_is_awake(engine)); GEM_BUG_ON(!intel_engine_pm_is_awake(engine));
llist_add(barrier_to_ll(node), &engine->barrier_tasks); llist_add(barrier_to_ll(node), &engine->barrier_tasks);
intel_engine_pm_put(engine); intel_engine_pm_put_delay(engine, 1);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment