diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-06 11:47:52 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-06 11:47:52 +0100 |
commit | 7fc07d84108d54c5b94625c0e168f31b2d66976e (patch) | |
tree | bebcbcae186108a815de0c1b90e25b1a5fa3852c /kernel/sched.c | |
parent | b67802ea8061393f7bd2d4db934646e76096027c (diff) | |
parent | 8a0be9ef8225638d26b455788f988c8f84ce9e75 (diff) | |
download | op-kernel-dev-7fc07d84108d54c5b94625c0e168f31b2d66976e.zip op-kernel-dev-7fc07d84108d54c5b94625c0e168f31b2d66976e.tar.gz |
Merge branch 'sched/core' into sched/cleanups
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 9fe8e17..8b92f40 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -4148,6 +4148,11 @@ static void run_rebalance_domains(struct softirq_action *h) #endif } +static inline int on_null_domain(int cpu) +{ + return !rcu_dereference(cpu_rq(cpu)->sd); +} + /* * Trigger the SCHED_SOFTIRQ if it is time to do periodic load balancing. * @@ -4205,7 +4210,9 @@ static inline void trigger_load_balance(struct rq *rq, int cpu) cpumask_test_cpu(cpu, nohz.cpu_mask)) return; #endif - if (time_after_eq(jiffies, rq->next_balance)) + /* Don't need to rebalance while attached to NULL domain */ + if (time_after_eq(jiffies, rq->next_balance) && + likely(!on_null_domain(cpu))) raise_softirq(SCHED_SOFTIRQ); } |