]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'linus' into core/ipi
authorIngo Molnar <mingo@elte.hu>
Fri, 13 Mar 2009 01:14:25 +0000 (02:14 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 13 Mar 2009 01:14:25 +0000 (02:14 +0100)
1  2 
kernel/sched.c
kernel/softirq.c

diff --combined kernel/sched.c
index d4c2749a2998d234fdd76a30f60a4b3d73be16e2,8e2558c2ba67be440ef7bcb2d95ff8138c806404..f1cd71918240ecae58e510bd576911549f60d0c0
@@@ -223,7 -223,7 +223,7 @@@ static void start_rt_bandwidth(struct r
  {
        ktime_t now;
  
-       if (rt_bandwidth_enabled() && rt_b->rt_runtime == RUNTIME_INF)
+       if (!rt_bandwidth_enabled() || rt_b->rt_runtime == RUNTIME_INF)
                return;
  
        if (hrtimer_active(&rt_b->rt_period_timer))
@@@ -1093,7 -1093,7 +1093,7 @@@ static void hrtick_start(struct rq *rq
        if (rq == this_rq()) {
                hrtimer_restart(timer);
        } else if (!rq->hrtick_csd_pending) {
 -              __smp_call_function_single(cpu_of(rq), &rq->hrtick_csd);
 +              __smp_call_function_single(cpu_of(rq), &rq->hrtick_csd, 0);
                rq->hrtick_csd_pending = 1;
        }
  }
@@@ -9224,6 -9224,16 +9224,16 @@@ static int sched_rt_global_constraints(
  
        return ret;
  }
+ int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk)
+ {
+       /* Don't accept realtime tasks when there is no way for them to run */
+       if (rt_task(tsk) && tg->rt_bandwidth.rt_runtime == 0)
+               return 0;
+       return 1;
+ }
  #else /* !CONFIG_RT_GROUP_SCHED */
  static int sched_rt_global_constraints(void)
  {
@@@ -9317,8 -9327,7 +9327,7 @@@ cpu_cgroup_can_attach(struct cgroup_sub
                      struct task_struct *tsk)
  {
  #ifdef CONFIG_RT_GROUP_SCHED
-       /* Don't accept realtime tasks when there is no way for them to run */
-       if (rt_task(tsk) && cgroup_tg(cgrp)->rt_bandwidth.rt_runtime == 0)
+       if (!sched_rt_can_attach(cgroup_tg(cgrp), tsk))
                return -EINVAL;
  #else
        /* We don't support RT-tasks being in separate groups */
diff --combined kernel/softirq.c
index 48c3d5d627a8bf15020edbead1e1e79150545219,9041ea7948feffbf887ed92fb8ce1e73ad55c81c..ebe2a4d59f2c33be9d2aabbe42a2748116a24b20
@@@ -496,7 -496,7 +496,7 @@@ static int __try_remote_softirq(struct 
                cp->flags = 0;
                cp->priv = softirq;
  
 -              __smp_call_function_single(cpu, cp);
 +              __smp_call_function_single(cpu, cp, 0);
                return 0;
        }
        return 1;
@@@ -626,6 -626,7 +626,7 @@@ static int ksoftirqd(void * __bind_cpu
                        preempt_enable_no_resched();
                        cond_resched();
                        preempt_disable();
+                       rcu_qsctr_inc((long)__bind_cpu);
                }
                preempt_enable();
                set_current_state(TASK_INTERRUPTIBLE);