diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2015-04-27 13:41:20 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-05-21 15:11:43 +0200 |
commit | a6f766f3975185af66a31a2cea2cd38721645999 (patch) | |
tree | 71b34650fbd4dd16d690a9a23eb2702ae0d31fa2 /drivers/gpu/drm/i915/i915_gem.c | |
parent | 03ade51185596a1d1028531c78fda557f244d676 (diff) |
drm/i915: Limit ring synchronisation (sw sempahores) RPS boosts
Ring switches can occur many times per frame, and are often out of
control, causing frequent RPS boosting for no practical benefit. Treat
the sw semaphore synchronisation as a separate client and only allow it
to boost once per busy/idle cycle.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: s/rq/req/]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 76ab4f18d618..4ad9e262bbc0 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3075,9 +3075,12 @@ __i915_gem_object_sync(struct drm_i915_gem_object *obj, return ret; if (!i915_semaphore_is_enabled(obj->base.dev)) { + struct drm_i915_private *i915 = to_i915(obj->base.dev); ret = __i915_wait_request(req, - atomic_read(&to_i915(obj->base.dev)->gpu_error.reset_counter), - to_i915(obj->base.dev)->mm.interruptible, NULL, NULL); + atomic_read(&i915->gpu_error.reset_counter), + i915->mm.interruptible, + NULL, + &i915->rps.semaphores); if (ret) return ret; |