Skip to content

Commit de3b4d9

Browse files
committed
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: 2a8862d ("drm/i915: Reduce the RPS shock") Signed-off-by: Chris Wilson <[email protected]> Reviewed-by: Andi Shyti <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 3f88dde commit de3b4d9

File tree

1 file changed

+4
-16
lines changed

1 file changed

+4
-16
lines changed

drivers/gpu/drm/i915/gt/intel_rps.c

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1680,30 +1680,18 @@ static void rps_work(struct work_struct *work)
16801680
adj = 0;
16811681
}
16821682

1683-
rps->last_adj = adj;
1684-
16851683
/*
1686-
* Limit deboosting and boosting to keep ourselves at the extremes
1687-
* when in the respective power modes (i.e. slowly decrease frequencies
1688-
* while in the HIGH_POWER zone and slowly increase frequencies while
1689-
* in the LOW_POWER zone). On idle, we will hit the timeout and drop
1690-
* to the next level quickly, and conversely if busy we expect to
1691-
* hit a waitboost and rapidly switch into max power.
1692-
*/
1693-
if ((adj < 0 && rps->power.mode == HIGH_POWER) ||
1694-
(adj > 0 && rps->power.mode == LOW_POWER))
1695-
rps->last_adj = 0;
1696-
1697-
/* sysfs frequency interfaces may have snuck in while servicing the
1698-
* interrupt
1684+
* sysfs frequency limits may have snuck in while
1685+
* servicing the interrupt
16991686
*/
17001687
new_freq += adj;
17011688
new_freq = clamp_t(int, new_freq, min, max);
17021689

17031690
if (intel_rps_set(rps, new_freq)) {
17041691
drm_dbg(&i915->drm, "Failed to set new GPU frequency\n");
1705-
rps->last_adj = 0;
1692+
adj = 0;
17061693
}
1694+
rps->last_adj = adj;
17071695

17081696
mutex_unlock(&rps->lock);
17091697

0 commit comments

Comments
 (0)