From a3646986ea9ba6315f908432694cc647e12ca9cf Mon Sep 17 00:00:00 2001 From: ligd Date: Tue, 12 Nov 2019 08:18:32 -0600 Subject: [PATCH] drivers/power/activity_governor.c: Fix timer can't start when meet very small pmtick. --- drivers/power/activity_governor.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/power/activity_governor.c b/drivers/power/activity_governor.c index 121a6ece97b..96ffa4eeefe 100644 --- a/drivers/power/activity_governor.c +++ b/drivers/power/activity_governor.c @@ -594,12 +594,16 @@ static void governor_timer(int domain) pdomstate->wdog = wd_create(); } - if (state < PM_SLEEP && !pdom->stay[pdom->state] && - pmtick[state]) + if (state < PM_SLEEP && !pdom->stay[pdom->state]) { int delay = pmtick[state] + pdomstate->btime - clock_systimer(); int left = wd_gettime(pdomstate->wdog); + if (delay <= 0) + { + delay = 1; + } + if (!WDOG_ISACTIVE(pdomstate->wdog) || abs(delay - left) > PM_TIMER_GAP) { wd_start(pdomstate->wdog, delay, governor_timer_cb, 0);