[PATCH 5.4 109/177] cpuidle: use first valid target residency as poll time

From: Greg Kroah-Hartman
Date: Mon Dec 16 2019 - 13:18:54 EST


From: Marcelo Tosatti <mtosatti@xxxxxxxxxx>

commit 36fcb4292473cb9c9ce7706d038bcf0eda5cabeb upstream.

Commit 259231a04561 ("cpuidle: add poll_limit_ns to cpuidle_device
structure") changed, by mistake, the target residency from the first
available sleep state to the last available sleep state (which should
be longer).

This might cause excessive polling.

Fixes: 259231a04561 ("cpuidle: add poll_limit_ns to cpuidle_device structure")
Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx>
Cc: 5.4+ <stable@xxxxxxxxxxxxxxx> # 5.4+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
drivers/cpuidle/cpuidle.c | 1 +
1 file changed, 1 insertion(+)

--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -384,6 +384,7 @@ u64 cpuidle_poll_time(struct cpuidle_dri
continue;

limit_ns = (u64)drv->states[i].target_residency * NSEC_PER_USEC;
+ break;
}

dev->poll_limit_ns = limit_ns;