]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - kernel/sched.c
[POWERPC] Add IRQSTACKS support on ppc32
[linux-2.6-omap-h63xx.git] / kernel / sched.c
index 09ca69b2c17d4e4174d263bcbb35d64119bef04b..740fb409e5bb32854dc9cc9b753cb25d83cdb7d4 100644 (file)
@@ -1656,42 +1656,6 @@ void aggregate_group_weight(struct task_group *tg, struct sched_domain *sd)
        aggregate(tg, sd)->task_weight = task_weight;
 }
 
-/*
- * Redistribute tg->shares amongst all tg->cfs_rq[]s.
- */
-static void __aggregate_redistribute_shares(struct task_group *tg)
-{
-       int i, max_cpu = smp_processor_id();
-       unsigned long rq_weight = 0;
-       unsigned long shares, max_shares = 0, shares_rem = tg->shares;
-
-       for_each_possible_cpu(i)
-               rq_weight += tg->cfs_rq[i]->load.weight;
-
-       for_each_possible_cpu(i) {
-               /*
-                * divide shares proportional to the rq_weights.
-                */
-               shares = tg->shares * tg->cfs_rq[i]->load.weight;
-               shares /= rq_weight + 1;
-
-               tg->cfs_rq[i]->shares = shares;
-
-               if (shares > max_shares) {
-                       max_shares = shares;
-                       max_cpu = i;
-               }
-               shares_rem -= shares;
-       }
-
-       /*
-        * Ensure it all adds up to tg->shares; we can loose a few
-        * due to rounding down when computing the per-cpu shares.
-        */
-       if (shares_rem)
-               tg->cfs_rq[max_cpu]->shares += shares_rem;
-}
-
 /*
  * Compute the weight of this group on the given cpus.
  */
@@ -1701,18 +1665,11 @@ void aggregate_group_shares(struct task_group *tg, struct sched_domain *sd)
        unsigned long shares = 0;
        int i;
 
-again:
        for_each_cpu_mask(i, sd->span)
                shares += tg->cfs_rq[i]->shares;
 
-       /*
-        * When the span doesn't have any shares assigned, but does have
-        * tasks to run do a machine wide rebalance (should be rare).
-        */
-       if (unlikely(!shares && aggregate(tg, sd)->rq_weight)) {
-               __aggregate_redistribute_shares(tg);
-               goto again;
-       }
+       if ((!shares && aggregate(tg, sd)->rq_weight) || shares > tg->shares)
+               shares = tg->shares;
 
        aggregate(tg, sd)->shares = shares;
 }
@@ -7991,11 +7948,6 @@ void __init sched_init_smp(void)
 #else
 void __init sched_init_smp(void)
 {
-#if defined(CONFIG_NUMA)
-       sched_group_nodes_bycpu = kzalloc(nr_cpu_ids * sizeof(void **),
-                                                               GFP_KERNEL);
-       BUG_ON(sched_group_nodes_bycpu == NULL);
-#endif
        sched_init_granularity();
 }
 #endif /* CONFIG_SMP */