From d3fc6ef0b8b1bf917101b61fa00cbcb0b672af33 Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Thu, 23 Aug 2012 08:34:07 -0700 Subject: [PATCH] --- yaml --- r: 323547 b: refs/heads/master c: 803b0ebae921714d1c36f0996db8125eda5fae53 h: refs/heads/master i: 323545: 06aa83a6e5c6609be6e9fed14e5f398d7d68ad14 323543: d2c331c65f278a048ba1c578ac26096bbafb4c4d v: v3 --- [refs] | 2 +- trunk/include/linux/interrupt.h | 2 ++ trunk/kernel/time/tick-sched.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 06fe97a812e9..c7057af6678d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a11e2058f02feb6884efb067f328012c318a13f +refs/heads/master: 803b0ebae921714d1c36f0996db8125eda5fae53 diff --git a/trunk/include/linux/interrupt.h b/trunk/include/linux/interrupt.h index c5f856a040b9..5e4e6170f43a 100644 --- a/trunk/include/linux/interrupt.h +++ b/trunk/include/linux/interrupt.h @@ -430,6 +430,8 @@ enum NR_SOFTIRQS }; +#define SOFTIRQ_STOP_IDLE_MASK (~(1 << RCU_SOFTIRQ)) + /* map softirq index to softirq name. update 'softirq_to_name' in * kernel/softirq.c when adding a new softirq. */ diff --git a/trunk/kernel/time/tick-sched.c b/trunk/kernel/time/tick-sched.c index 024540f97f74..4b1785a7bb83 100644 --- a/trunk/kernel/time/tick-sched.c +++ b/trunk/kernel/time/tick-sched.c @@ -436,7 +436,8 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) if (unlikely(local_softirq_pending() && cpu_online(cpu))) { static int ratelimit; - if (ratelimit < 10) { + if (ratelimit < 10 && + (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { printk(KERN_ERR "NOHZ: local_softirq_pending %02x\n", (unsigned int) local_softirq_pending()); ratelimit++;