On Tue, Apr 7, 2015 at 5:04 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > That smells like something we should be able to do without a lock. > > If we use {READ,WRITE}_ONCE() on those two fields (->active_timers and > ->next_timer) we should be able to do this without the spinlock. Yeah, when atomics were suggested earlier, I was wondering if we could just use READ_ONCE/WRITE_ONCE. > Races here aren't really a problem I think, if you manage to install a > timer at the current jiffy and have already missed the tick you're in > the same boat. You get to wait for the next tick. The lock shouldn't be used in get_next_timer_interrupt() either right? unsigned long get_next_timer_interrupt(unsigned long now) { ... #ifdef CONFIG_PREEMPT_RT_FULL /* * On PREEMPT_RT we cannot sleep here. If the trylock does not * succeed then we return the worst-case 'expires in 1 tick' * value. We use the rt functions here directly to avoid a * migrate_disable() call. */ if (!spin_do_trylock(&base->lock)) return now + 1; #else -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html