RE: [PATCH 0/6] cpuidle: menu: Fixes, optimizations and cleanups
From: Doug Smythies
Date: Tue Oct 09 2018 - 20:02:47 EST
On 2018.10.09 03:43 Rafael J. Wysocki wrote:
...[snip]...
> While at it, could you test the appended patch
> (on top of the previous 8) for me please?
>
> I think that this code can be simplified now.
>
> ---
> drivers/cpuidle/governors/menu.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> Index: linux-pm/drivers/cpuidle/governors/menu.c
> ===================================================================
> --- linux-pm.orig/drivers/cpuidle/governors/menu.c
> +++ linux-pm/drivers/cpuidle/governors/menu.c
> @@ -371,12 +371,12 @@ static int menu_select(struct cpuidle_dr
> if (s->target_residency > predicted_us) {
> /*
> * Use a physical idle state, not busy polling, unless
> - * a timer is going to trigger really really soon.
> + * a timer is going to trigger soon enough.
> */
> if ((drv->states[idx].flags & CPUIDLE_FLAG_POLLING) &&
> - i == idx + 1 && latency_req > s->exit_latency &&
> - data->next_timer_us > max_t(unsigned int, 20,
> - s->target_residency)) {
> + s->exit_latency <= latency_req &&
> + s->target_residency <= data->next_timer_us) {
> + predicted_us = s->target_residency;
> idx = i;
> break;
> }
It seems to work fine.
I was unable to detect any difference between the 8 patch set and with
this additional patch for any of the tests that I ran. (at least beyond
noise and/or experimental error.)
Note: I didn't publish any of the pretty graphs.
... Doug