Messages in this thread | | | Date | Mon, 23 Apr 2018 17:58:01 +0200 | From | Peter Zijlstra <> | Subject | Re: Experiencing freezes with kernel 4.16.3 on a desktop with E5500 CPU (bisect included) |
| |
On Mon, Apr 23, 2018 at 02:38:47PM +0200, Peter Zijlstra wrote:
> @@ -142,6 +152,13 @@ static void __clocksource_unstable(struct clocksource *cs) > cs->flags &= ~(CLOCK_SOURCE_VALID_FOR_HRES | CLOCK_SOURCE_WATCHDOG); > cs->flags |= CLOCK_SOURCE_UNSTABLE; > > + if (list_empty(&cs->list)) { > + cs->rating = 0; > + return; > + } > + > + __clocksource_change_rating(cs, 0); > + > if (cs->mark_unstable) > cs->mark_unstable(cs); >
Thomas, we could not find the de-rate stuff, but the above can be simplified; what happens is:
cs->flags |= UNSTABLE; schedule_work(&watchdog_work) kthread_run(clocksource_watchdog_kthread) __clocksource_watchdog_kthread() if (cs->flags & UNSTABLE) __clocksource_change_rating() clocksource_select()
| |