drm/i915/gt: Restore aggressive post-boost downclocking
We reduced the clocks slowly after a boost event based on the
observation that the smoothness of animations suffered. However, since
reducing the evalution intervals, we should be able to respond to the
rapidly fluctuating workload of a simple desktop animation and so
restore the more aggressive downclocking.
References: 2a8862d2f3
("drm/i915: Reduce the RPS shock")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Andi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200429205446.3259-6-chris@chris-wilson.co.uk
This commit is contained in:
parent
3f88dde6ee
commit
de3b4d9361
@ -1680,30 +1680,18 @@ static void rps_work(struct work_struct *work)
|
||||
adj = 0;
|
||||
}
|
||||
|
||||
rps->last_adj = adj;
|
||||
|
||||
/*
|
||||
* Limit deboosting and boosting to keep ourselves at the extremes
|
||||
* when in the respective power modes (i.e. slowly decrease frequencies
|
||||
* while in the HIGH_POWER zone and slowly increase frequencies while
|
||||
* in the LOW_POWER zone). On idle, we will hit the timeout and drop
|
||||
* to the next level quickly, and conversely if busy we expect to
|
||||
* hit a waitboost and rapidly switch into max power.
|
||||
*/
|
||||
if ((adj < 0 && rps->power.mode == HIGH_POWER) ||
|
||||
(adj > 0 && rps->power.mode == LOW_POWER))
|
||||
rps->last_adj = 0;
|
||||
|
||||
/* sysfs frequency interfaces may have snuck in while servicing the
|
||||
* interrupt
|
||||
* sysfs frequency limits may have snuck in while
|
||||
* servicing the interrupt
|
||||
*/
|
||||
new_freq += adj;
|
||||
new_freq = clamp_t(int, new_freq, min, max);
|
||||
|
||||
if (intel_rps_set(rps, new_freq)) {
|
||||
drm_dbg(&i915->drm, "Failed to set new GPU frequency\n");
|
||||
rps->last_adj = 0;
|
||||
adj = 0;
|
||||
}
|
||||
rps->last_adj = adj;
|
||||
|
||||
mutex_unlock(&rps->lock);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user