[PATCH 7/7] be-boostier
Chris Wilson
chris at chris-wilson.co.uk
Sat Apr 25 15:52:42 UTC 2020
---
drivers/gpu/drm/i915/gt/intel_rps.c | 9 +++++++--
drivers/gpu/drm/i915/gt/intel_rps_types.h | 1 +
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index f1994e0cdba9..58e8dbf6a7ea 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -71,23 +71,28 @@ static void rps_timer(struct timer_list *t)
if (10 * max_busy > 9 * dt && /* >90% busy */
rps->cur_freq < rps->max_freq_softlimit) {
rps->pm_iir |= GEN6_PM_RP_UP_THRESHOLD;
+ rps->pm_interval = 1;
schedule_work(&rps->work);
} else if (4 * max_busy < 3 * dt && /* <75% busy */
rps->cur_freq > rps->min_freq_softlimit) {
rps->pm_iir |= GEN6_PM_RP_DOWN_THRESHOLD;
+ rps->pm_interval = 1;
schedule_work(&rps->work);
} else {
rps->last_adj = 0;
}
- mod_timer(&rps->timer, jiffies + msecs_to_jiffies_timeout(5));
+ mod_timer(&rps->timer,
+ jiffies + msecs_to_jiffies(rps->pm_interval));
+ rps->pm_interval = min(rps->pm_interval + 1, 15u);
}
}
static void rps_start_timer(struct intel_rps *rps)
{
rps->pm_timestamp = ktime_sub(ktime_get(), rps->pm_timestamp);
- mod_timer(&rps->timer, jiffies + msecs_to_jiffies_timeout(1));
+ rps->pm_interval = 1;
+ mod_timer(&rps->timer, jiffies + 1);
}
static void rps_stop_timer(struct intel_rps *rps)
diff --git a/drivers/gpu/drm/i915/gt/intel_rps_types.h b/drivers/gpu/drm/i915/gt/intel_rps_types.h
index 804e2ccc0ea8..38083f0402d9 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_rps_types.h
@@ -50,6 +50,7 @@ struct intel_rps {
unsigned long flags;
ktime_t pm_timestamp;
+ u32 pm_interval;
u32 pm_iir;
/* PM interrupt bits that should never be masked */
--
2.20.1
More information about the Intel-gfx-trybot
mailing list