[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3144686.I8R4d9A2JO@kreacher>
Date: Wed, 13 Nov 2019 01:07:19 +0100
From: "Rafael J. Wysocki" <rjw@...ysocki.net>
To: Linux PM <linux-pm@...r.kernel.org>
Cc: LKML <linux-kernel@...r.kernel.org>,
Doug Smythies <dsmythies@...us.net>
Subject: [PATCH 2/3] cpuidle: teo: Avoid expecting unrealistic idle times
From: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
If an idle state shallower than the one "matching" the time till the
next timer event is considered for selection, expect the idle duration
to fall in the middle of the "bin" corresponding to that state rather
than at the beginning of it which is unrealistic.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
---
drivers/cpuidle/governors/teo.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
Index: linux-pm/drivers/cpuidle/governors/teo.c
===================================================================
--- linux-pm.orig/drivers/cpuidle/governors/teo.c
+++ linux-pm/drivers/cpuidle/governors/teo.c
@@ -360,7 +360,14 @@ static int teo_select(struct cpuidle_dri
if (max_early_idx >= 0) {
idx = max_early_idx;
- duration_ns = drv->states[idx].target_residency_ns;
+ /*
+ * Expect the idle duration to fall in the middle of the
+ * "bin" corresponding to idx (note that the maximum
+ * state index is guaranteed to be greater than idx at
+ * this point).
+ */
+ duration_ns = (drv->states[idx].target_residency_ns +
+ drv->states[idx+1].target_residency_ns) / 2;
}
}
Powered by blists - more mailing lists