X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=kernel%2Ftime%2Ftick-sched.c;h=beef7ccdf842f3cea9994c19b879baa06f3e94f5;hb=b312bf359e20cc39c00d480fd40a24c245d80bf7;hp=d63008b09a4cee1cfc71b5e53e929b39312afff0;hpb=8d2567a620ae8c24968a2bdc1c906c724fac1f6a;p=linux-2.6-omap-h63xx.git diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index d63008b09a4..beef7ccdf84 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -48,6 +48,13 @@ static void tick_do_update_jiffies64(ktime_t now) unsigned long ticks = 0; ktime_t delta; + /* + * Do a quick check without holding xtime_lock: + */ + delta = ktime_sub(now, last_jiffies_update); + if (delta.tv64 < tick_period.tv64) + return; + /* Reevalute with xtime_lock held */ write_seqlock(&xtime_lock); @@ -228,6 +235,7 @@ void tick_nohz_stop_sched_tick(void) local_softirq_pending()); ratelimit++; } + goto end; } ts->idle_calls++;