From: Yunhong Jiang Date: Tue, 18 Aug 2015 18:23:10 +0000 (-0700) Subject: Restore the non_hz_full X-Git-Tag: colorado.1.0~18^2 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?p=kvmfornfv.git;a=commitdiff_plain;h=fafab8722263f4ab08894e35f4385febbce09dd1 Restore the non_hz_full Please refer to http://comments.gmane.org/gmane.linux.kernel/1891417, the last two mails on this discussion. The non_hz_full is important for RT, so take it back temporarily. Unluckily I didn't find the corresponding reverting patch on the RT tree. Upstream status: pending Change-Id: I2748a8f9b7a98ef2185a1da60089984432393eff Signed-off-by: Yunhong Jiang --- diff --git a/kernel/kernel/time/timer.c b/kernel/kernel/time/timer.c index 76a301b24..016a0bf52 100644 --- a/kernel/kernel/time/timer.c +++ b/kernel/kernel/time/timer.c @@ -1453,9 +1453,11 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem) * the base lock to check when the next timer is pending and so * we assume the next jiffy. */ - return basem + TICK_NSEC; -#endif + if (!spin_do_trylock(&base->lock)) + return basem + TICK_NSEC; +#else spin_lock(&base->lock); +#endif if (base->active_timers) { if (time_before_eq(base->next_timer, base->timer_jiffies)) base->next_timer = __next_timer_interrupt(base); @@ -1465,7 +1467,11 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem) else expires = basem + (nextevt - basej) * TICK_NSEC; } +#ifdef CONFIG_PREEMPT_RT_FULL + rt_spin_unlock(&base->lock); +#else spin_unlock(&base->lock); +#endif return cmp_next_hrtimer_event(basem, expires); }