Re: [PATCH 6/9] sched/clock: Remove watchdog touching

From: Peter Zijlstra
Date: Fri Apr 21 2017 - 13:38:55 EST


On Fri, Apr 21, 2017 at 04:58:02PM +0200, Peter Zijlstra wrote:
> Commit:
>
> 2bacec8c318c ("sched: touch softlockup watchdog after idling")
>
> introduced the touch_softlockup_watchdog_sched() call without
> justification and I feel sched_clock management is not the right
> place, it should only be concerned with producing semi coherent time.
>
> If this causes watchdog thingies, we can find a better place.

Hurmph, the rest should've gone in the next patch, which calls
sched_clock_idle_wakeup_event() from a place with IRQs enabled.

> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> ---
> kernel/sched/clock.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> --- a/kernel/sched/clock.c
> +++ b/kernel/sched/clock.c
> @@ -410,15 +410,21 @@ void sched_clock_idle_sleep_event(void)
> EXPORT_SYMBOL_GPL(sched_clock_idle_sleep_event);
>
> /*
> - * We just idled; resync with ktime. (called with irqs disabled):
> + * We just idled; resync with ktime.
> */
> void sched_clock_idle_wakeup_event(void)
> {
> - if (timekeeping_suspended)
> + unsigned long flags;
> +
> + if (sched_clock_stable())
> + return;
> +
> + if (unlikely(timekeeping_suspended))
> return;
>
> + local_irq_save(flags);
> sched_clock_tick();
> - touch_softlockup_watchdog_sched();
> + local_irq_restore(flags);
> }
> EXPORT_SYMBOL_GPL(sched_clock_idle_wakeup_event);
>
>
>