Skip to content

Commit cd2af07

Browse files
Peter ZijlstraKAGA-KOKO
authored andcommitted
clocksource: Consistent de-rate when marking unstable
When a registered clocksource gets marked unstable the watchdog_kthread will de-rate and re-select the clocksource. Ensure it also de-rates when getting called on an unregistered clocksource. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: len.brown@intel.com Cc: rjw@rjwysocki.net Cc: diego.viola@gmail.com Cc: rui.zhang@intel.com Cc: stable@vger.kernel.org Link: https://lkml.kernel.org/r/20180430100344.594904898@infradead.org
1 parent e3b4f79 commit cd2af07

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

kernel/time/clocksource.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,19 @@ static void __clocksource_unstable(struct clocksource *cs)
152152
cs->flags &= ~(CLOCK_SOURCE_VALID_FOR_HRES | CLOCK_SOURCE_WATCHDOG);
153153
cs->flags |= CLOCK_SOURCE_UNSTABLE;
154154

155-
if (list_empty(&cs->list))
155+
/*
156+
* If the clocksource is registered clocksource_watchdog_kthread() will
157+
* re-rate and re-select.
158+
*/
159+
if (list_empty(&cs->list)) {
160+
cs->rating = 0;
156161
return;
162+
}
157163

158164
if (cs->mark_unstable)
159165
cs->mark_unstable(cs);
160166

167+
/* kick clocksource_watchdog_kthread() */
161168
if (finished_booting)
162169
schedule_work(&watchdog_work);
163170
}

0 commit comments

Comments
 (0)