Re: [patch 8/8] hrtimer: Avoid more SMP function calls in clock_was_set()

From: Thomas Gleixner
Date: Tue Apr 27 2021 - 15:59:47 EST


On Tue, Apr 27 2021 at 12:11, Marcelo Tosatti wrote:
> On Tue, Apr 27, 2021 at 10:25:45AM +0200, Thomas Gleixner wrote:
> Consider
>
>
> hrtimer_interrupt
> in_hrtirq = 1
> __run_hrtimer
> raw_spin_unlock_irqrestore(&cpu_base->lock, flags)
> settimeofday
> clock_was_set
> lock cpu_base->lock
> update_needs_ipi returns false
> continue to process hrtimers with stale base->offset

Bah. I somehow convinced myself that hrtimer_interrupt() rechecks the
offset before clearing in_hrtirq, but that's not true. It does so when
reprogramming fails, but not for the regular case.

Lemme stare at it some more.

Thanks,

tglx