updated i586 config for planetlab
[linux-2.6.git] / kernel / sched.c
1 /*
2  *  kernel/sched.c
3  *
4  *  Kernel scheduler and related syscalls
5  *
6  *  Copyright (C) 1991-2002  Linus Torvalds
7  *
8  *  1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and
9  *              make semaphores SMP safe
10  *  1998-11-19  Implemented schedule_timeout() and related stuff
11  *              by Andrea Arcangeli
12  *  2002-01-04  New ultra-scalable O(1) scheduler by Ingo Molnar:
13  *              hybrid priority-list and round-robin design with
14  *              an array-switch method of distributing timeslices
15  *              and per-CPU runqueues.  Cleanups and useful suggestions
16  *              by Davide Libenzi, preemptible kernel bits by Robert Love.
17  *  2003-09-03  Interactivity tuning by Con Kolivas.
18  *  2004-04-02  Scheduler domains code by Nick Piggin
19  */
20
21 #include <linux/mm.h>
22 #include <linux/module.h>
23 #include <linux/nmi.h>
24 #include <linux/init.h>
25 #include <asm/uaccess.h>
26 #include <linux/highmem.h>
27 #include <linux/smp_lock.h>
28 #include <asm/mmu_context.h>
29 #include <linux/interrupt.h>
30 #include <linux/capability.h>
31 #include <linux/completion.h>
32 #include <linux/kernel_stat.h>
33 #include <linux/security.h>
34 #include <linux/notifier.h>
35 #include <linux/profile.h>
36 #include <linux/suspend.h>
37 #include <linux/vmalloc.h>
38 #include <linux/blkdev.h>
39 #include <linux/delay.h>
40 #include <linux/smp.h>
41 #include <linux/threads.h>
42 #include <linux/timer.h>
43 #include <linux/rcupdate.h>
44 #include <linux/cpu.h>
45 #include <linux/cpuset.h>
46 #include <linux/percpu.h>
47 #include <linux/kthread.h>
48 #include <linux/seq_file.h>
49 #include <linux/syscalls.h>
50 #include <linux/times.h>
51 #include <linux/acct.h>
52 #include <asm/tlb.h>
53 #include <asm/unistd.h>
54
55 #include <linux/vs_context.h>
56 #include <linux/vs_cvirt.h>
57 #include <linux/vs_sched.h>
58
59 /*
60  * Convert user-nice values [ -20 ... 0 ... 19 ]
61  * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
62  * and back.
63  */
64 #define NICE_TO_PRIO(nice)      (MAX_RT_PRIO + (nice) + 20)
65 #define PRIO_TO_NICE(prio)      ((prio) - MAX_RT_PRIO - 20)
66 #define TASK_NICE(p)            PRIO_TO_NICE((p)->static_prio)
67
68 /*
69  * 'User priority' is the nice value converted to something we
70  * can work with better when scaling various scheduler parameters,
71  * it's a [ 0 ... 39 ] range.
72  */
73 #define USER_PRIO(p)            ((p)-MAX_RT_PRIO)
74 #define TASK_USER_PRIO(p)       USER_PRIO((p)->static_prio)
75 #define MAX_USER_PRIO           (USER_PRIO(MAX_PRIO))
76
77 /*
78  * Some helpers for converting nanosecond timing to jiffy resolution
79  */
80 #define NS_TO_JIFFIES(TIME)     ((TIME) / (1000000000 / HZ))
81 #define JIFFIES_TO_NS(TIME)     ((TIME) * (1000000000 / HZ))
82
83 /*
84  * These are the 'tuning knobs' of the scheduler:
85  *
86  * Minimum timeslice is 5 msecs (or 1 jiffy, whichever is larger),
87  * default timeslice is 100 msecs, maximum timeslice is 800 msecs.
88  * Timeslices get refilled after they expire.
89  */
90 #define MIN_TIMESLICE           max(5 * HZ / 1000, 1)
91 #define DEF_TIMESLICE           (100 * HZ / 1000)
92 #define ON_RUNQUEUE_WEIGHT       30
93 #define CHILD_PENALTY            95
94 #define PARENT_PENALTY          100
95 #define EXIT_WEIGHT               3
96 #define PRIO_BONUS_RATIO         25
97 #define MAX_BONUS               (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100)
98 #define INTERACTIVE_DELTA         2
99 #define MAX_SLEEP_AVG           (DEF_TIMESLICE * MAX_BONUS)
100 #define STARVATION_LIMIT        (MAX_SLEEP_AVG)
101 #define NS_MAX_SLEEP_AVG        (JIFFIES_TO_NS(MAX_SLEEP_AVG))
102
103 /*
104  * If a task is 'interactive' then we reinsert it in the active
105  * array after it has expired its current timeslice. (it will not
106  * continue to run immediately, it will still roundrobin with
107  * other interactive tasks.)
108  *
109  * This part scales the interactivity limit depending on niceness.
110  *
111  * We scale it linearly, offset by the INTERACTIVE_DELTA delta.
112  * Here are a few examples of different nice levels:
113  *
114  *  TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0]
115  *  TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0]
116  *  TASK_INTERACTIVE(  0): [1,1,1,1,0,0,0,0,0,0,0]
117  *  TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0]
118  *  TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0]
119  *
120  * (the X axis represents the possible -5 ... 0 ... +5 dynamic
121  *  priority range a task can explore, a value of '1' means the
122  *  task is rated interactive.)
123  *
124  * Ie. nice +19 tasks can never get 'interactive' enough to be
125  * reinserted into the active array. And only heavily CPU-hog nice -20
126  * tasks will be expired. Default nice 0 tasks are somewhere between,
127  * it takes some effort for them to get interactive, but it's not
128  * too hard.
129  */
130
131 #define CURRENT_BONUS(p) \
132         (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \
133                 MAX_SLEEP_AVG)
134
135 #define GRANULARITY     (10 * HZ / 1000 ? : 1)
136
137 #ifdef CONFIG_SMP
138 #define TIMESLICE_GRANULARITY(p)        (GRANULARITY * \
139                 (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \
140                         num_online_cpus())
141 #else
142 #define TIMESLICE_GRANULARITY(p)        (GRANULARITY * \
143                 (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)))
144 #endif
145
146 #define SCALE(v1,v1_max,v2_max) \
147         (v1) * (v2_max) / (v1_max)
148
149 #define DELTA(p) \
150         (SCALE(TASK_NICE(p), 40, MAX_BONUS) + INTERACTIVE_DELTA)
151
152 #define TASK_INTERACTIVE(p) \
153         ((p)->prio <= (p)->static_prio - DELTA(p))
154
155 #define INTERACTIVE_SLEEP(p) \
156         (JIFFIES_TO_NS(MAX_SLEEP_AVG * \
157                 (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1))
158
159 #define TASK_PREEMPTS_CURR(p, rq) \
160         ((p)->prio < (rq)->curr->prio)
161
162 /*
163  * task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ]
164  * to time slice values: [800ms ... 100ms ... 5ms]
165  *
166  * The higher a thread's priority, the bigger timeslices
167  * it gets during one round of execution. But even the lowest
168  * priority thread gets MIN_TIMESLICE worth of execution time.
169  */
170
171 #define SCALE_PRIO(x, prio) \
172         max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)
173
174 static unsigned int task_timeslice(task_t *p)
175 {
176         if (p->static_prio < NICE_TO_PRIO(0))
177                 return SCALE_PRIO(DEF_TIMESLICE*4, p->static_prio);
178         else
179                 return SCALE_PRIO(DEF_TIMESLICE, p->static_prio);
180 }
181 #define task_hot(p, now, sd) ((long long) ((now) - (p)->last_ran)       \
182                                 < (long long) (sd)->cache_hot_time)
183
184 /*
185  * These are the runqueue data structures:
186  */
187
188 #define BITMAP_SIZE ((((MAX_PRIO+1+7)/8)+sizeof(long)-1)/sizeof(long))
189
190 typedef struct runqueue runqueue_t;
191
192 struct prio_array {
193         unsigned int nr_active;
194         unsigned long bitmap[BITMAP_SIZE];
195         struct list_head queue[MAX_PRIO];
196 };
197
198 /*
199  * This is the main, per-CPU runqueue data structure.
200  *
201  * Locking rule: those places that want to lock multiple runqueues
202  * (such as the load balancing or the thread migration code), lock
203  * acquire operations must be ordered by ascending &runqueue.
204  */
205 struct runqueue {
206         spinlock_t lock;
207
208         /*
209          * nr_running and cpu_load should be in the same cacheline because
210          * remote CPUs use both these fields when doing load calculation.
211          */
212         unsigned long nr_running;
213 #ifdef CONFIG_SMP
214         unsigned long cpu_load[3];
215 #endif
216         unsigned long long nr_switches;
217
218         /*
219          * This is part of a global counter where only the total sum
220          * over all CPUs matters. A task can increase this counter on
221          * one CPU and if it got migrated afterwards it may decrease
222          * it on another CPU. Always updated under the runqueue lock:
223          */
224         unsigned long nr_uninterruptible;
225
226         unsigned long expired_timestamp;
227         unsigned long long timestamp_last_tick;
228         task_t *curr, *idle;
229         struct mm_struct *prev_mm;
230         prio_array_t *active, *expired, arrays[2];
231         int best_expired_prio;
232         atomic_t nr_iowait;
233
234 #ifdef CONFIG_SMP
235         struct sched_domain *sd;
236
237         /* For active balancing */
238         int active_balance;
239         int push_cpu;
240
241         task_t *migration_thread;
242         struct list_head migration_queue;
243         int cpu;
244 #endif
245 #ifdef CONFIG_VSERVER_HARDCPU
246         struct list_head hold_queue;
247         int idle_tokens;
248 #endif
249
250 #ifdef CONFIG_SCHEDSTATS
251         /* latency stats */
252         struct sched_info rq_sched_info;
253
254         /* sys_sched_yield() stats */
255         unsigned long yld_exp_empty;
256         unsigned long yld_act_empty;
257         unsigned long yld_both_empty;
258         unsigned long yld_cnt;
259
260         /* schedule() stats */
261         unsigned long sched_switch;
262         unsigned long sched_cnt;
263         unsigned long sched_goidle;
264
265         /* try_to_wake_up() stats */
266         unsigned long ttwu_cnt;
267         unsigned long ttwu_local;
268 #endif
269 };
270
271 static DEFINE_PER_CPU(struct runqueue, runqueues);
272
273 /*
274  * The domain tree (rq->sd) is protected by RCU's quiescent state transition.
275  * See detach_destroy_domains: synchronize_sched for details.
276  *
277  * The domain tree of any CPU may only be accessed from within
278  * preempt-disabled sections.
279  */
280 #define for_each_domain(cpu, domain) \
281 for (domain = rcu_dereference(cpu_rq(cpu)->sd); domain; domain = domain->parent)
282
283 #define cpu_rq(cpu)             (&per_cpu(runqueues, (cpu)))
284 #define this_rq()               (&__get_cpu_var(runqueues))
285 #define task_rq(p)              cpu_rq(task_cpu(p))
286 #define cpu_curr(cpu)           (cpu_rq(cpu)->curr)
287
288 #ifndef prepare_arch_switch
289 # define prepare_arch_switch(next)      do { } while (0)
290 #endif
291 #ifndef finish_arch_switch
292 # define finish_arch_switch(prev)       do { } while (0)
293 #endif
294
295 #ifndef __ARCH_WANT_UNLOCKED_CTXSW
296 static inline int task_running(runqueue_t *rq, task_t *p)
297 {
298         return rq->curr == p;
299 }
300
301 static inline void prepare_lock_switch(runqueue_t *rq, task_t *next)
302 {
303 }
304
305 static inline void finish_lock_switch(runqueue_t *rq, task_t *prev)
306 {
307 #ifdef CONFIG_DEBUG_SPINLOCK
308         /* this is a valid case when another task releases the spinlock */
309         rq->lock.owner = current;
310 #endif
311         spin_unlock_irq(&rq->lock);
312 }
313
314 #else /* __ARCH_WANT_UNLOCKED_CTXSW */
315 static inline int task_running(runqueue_t *rq, task_t *p)
316 {
317 #ifdef CONFIG_SMP
318         return p->oncpu;
319 #else
320         return rq->curr == p;
321 #endif
322 }
323
324 static inline void prepare_lock_switch(runqueue_t *rq, task_t *next)
325 {
326 #ifdef CONFIG_SMP
327         /*
328          * We can optimise this out completely for !SMP, because the
329          * SMP rebalancing from interrupt is the only thing that cares
330          * here.
331          */
332         next->oncpu = 1;
333 #endif
334 #ifdef __ARCH_WANT_INTERRUPTS_ON_CTXSW
335         spin_unlock_irq(&rq->lock);
336 #else
337         spin_unlock(&rq->lock);
338 #endif
339 }
340
341 static inline void finish_lock_switch(runqueue_t *rq, task_t *prev)
342 {
343 #ifdef CONFIG_SMP
344         /*
345          * After ->oncpu is cleared, the task can be moved to a different CPU.
346          * We must ensure this doesn't happen until the switch is completely
347          * finished.
348          */
349         smp_wmb();
350         prev->oncpu = 0;
351 #endif
352 #ifndef __ARCH_WANT_INTERRUPTS_ON_CTXSW
353         local_irq_enable();
354 #endif
355 }
356 #endif /* __ARCH_WANT_UNLOCKED_CTXSW */
357
358 /*
359  * task_rq_lock - lock the runqueue a given task resides on and disable
360  * interrupts.  Note the ordering: we can safely lookup the task_rq without
361  * explicitly disabling preemption.
362  */
363 static inline runqueue_t *task_rq_lock(task_t *p, unsigned long *flags)
364         __acquires(rq->lock)
365 {
366         struct runqueue *rq;
367
368 repeat_lock_task:
369         local_irq_save(*flags);
370         rq = task_rq(p);
371         spin_lock(&rq->lock);
372         if (unlikely(rq != task_rq(p))) {
373                 spin_unlock_irqrestore(&rq->lock, *flags);
374                 goto repeat_lock_task;
375         }
376         return rq;
377 }
378
379 static inline void task_rq_unlock(runqueue_t *rq, unsigned long *flags)
380         __releases(rq->lock)
381 {
382         spin_unlock_irqrestore(&rq->lock, *flags);
383 }
384
385 #ifdef CONFIG_SCHEDSTATS
386 /*
387  * bump this up when changing the output format or the meaning of an existing
388  * format, so that tools can adapt (or abort)
389  */
390 #define SCHEDSTAT_VERSION 12
391
392 static int show_schedstat(struct seq_file *seq, void *v)
393 {
394         int cpu;
395
396         seq_printf(seq, "version %d\n", SCHEDSTAT_VERSION);
397         seq_printf(seq, "timestamp %lu\n", jiffies);
398         for_each_online_cpu(cpu) {
399                 runqueue_t *rq = cpu_rq(cpu);
400 #ifdef CONFIG_SMP
401                 struct sched_domain *sd;
402                 int dcnt = 0;
403 #endif
404
405                 /* runqueue-specific stats */
406                 seq_printf(seq,
407                     "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu",
408                     cpu, rq->yld_both_empty,
409                     rq->yld_act_empty, rq->yld_exp_empty, rq->yld_cnt,
410                     rq->sched_switch, rq->sched_cnt, rq->sched_goidle,
411                     rq->ttwu_cnt, rq->ttwu_local,
412                     rq->rq_sched_info.cpu_time,
413                     rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt);
414
415                 seq_printf(seq, "\n");
416
417 #ifdef CONFIG_SMP
418                 /* domain-specific stats */
419                 preempt_disable();
420                 for_each_domain(cpu, sd) {
421                         enum idle_type itype;
422                         char mask_str[NR_CPUS];
423
424                         cpumask_scnprintf(mask_str, NR_CPUS, sd->span);
425                         seq_printf(seq, "domain%d %s", dcnt++, mask_str);
426                         for (itype = SCHED_IDLE; itype < MAX_IDLE_TYPES;
427                                         itype++) {
428                                 seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu",
429                                     sd->lb_cnt[itype],
430                                     sd->lb_balanced[itype],
431                                     sd->lb_failed[itype],
432                                     sd->lb_imbalance[itype],
433                                     sd->lb_gained[itype],
434                                     sd->lb_hot_gained[itype],
435                                     sd->lb_nobusyq[itype],
436                                     sd->lb_nobusyg[itype]);
437                         }
438                         seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu\n",
439                             sd->alb_cnt, sd->alb_failed, sd->alb_pushed,
440                             sd->sbe_cnt, sd->sbe_balanced, sd->sbe_pushed,
441                             sd->sbf_cnt, sd->sbf_balanced, sd->sbf_pushed,
442                             sd->ttwu_wake_remote, sd->ttwu_move_affine, sd->ttwu_move_balance);
443                 }
444                 preempt_enable();
445 #endif
446         }
447         return 0;
448 }
449
450 static int schedstat_open(struct inode *inode, struct file *file)
451 {
452         unsigned int size = PAGE_SIZE * (1 + num_online_cpus() / 32);
453         char *buf = kmalloc(size, GFP_KERNEL);
454         struct seq_file *m;
455         int res;
456
457         if (!buf)
458                 return -ENOMEM;
459         res = single_open(file, show_schedstat, NULL);
460         if (!res) {
461                 m = file->private_data;
462                 m->buf = buf;
463                 m->size = size;
464         } else
465                 kfree(buf);
466         return res;
467 }
468
469 struct file_operations proc_schedstat_operations = {
470         .open    = schedstat_open,
471         .read    = seq_read,
472         .llseek  = seq_lseek,
473         .release = single_release,
474 };
475
476 # define schedstat_inc(rq, field)       do { (rq)->field++; } while (0)
477 # define schedstat_add(rq, field, amt)  do { (rq)->field += (amt); } while (0)
478 #else /* !CONFIG_SCHEDSTATS */
479 # define schedstat_inc(rq, field)       do { } while (0)
480 # define schedstat_add(rq, field, amt)  do { } while (0)
481 #endif
482
483 /*
484  * rq_lock - lock a given runqueue and disable interrupts.
485  */
486 static inline runqueue_t *this_rq_lock(void)
487         __acquires(rq->lock)
488 {
489         runqueue_t *rq;
490
491         local_irq_disable();
492         rq = this_rq();
493         spin_lock(&rq->lock);
494
495         return rq;
496 }
497
498 #ifdef CONFIG_SCHEDSTATS
499 /*
500  * Called when a process is dequeued from the active array and given
501  * the cpu.  We should note that with the exception of interactive
502  * tasks, the expired queue will become the active queue after the active
503  * queue is empty, without explicitly dequeuing and requeuing tasks in the
504  * expired queue.  (Interactive tasks may be requeued directly to the
505  * active queue, thus delaying tasks in the expired queue from running;
506  * see scheduler_tick()).
507  *
508  * This function is only called from sched_info_arrive(), rather than
509  * dequeue_task(). Even though a task may be queued and dequeued multiple
510  * times as it is shuffled about, we're really interested in knowing how
511  * long it was from the *first* time it was queued to the time that it
512  * finally hit a cpu.
513  */
514 static inline void sched_info_dequeued(task_t *t)
515 {
516         t->sched_info.last_queued = 0;
517 }
518
519 /*
520  * Called when a task finally hits the cpu.  We can now calculate how
521  * long it was waiting to run.  We also note when it began so that we
522  * can keep stats on how long its timeslice is.
523  */
524 static void sched_info_arrive(task_t *t)
525 {
526         unsigned long now = jiffies, diff = 0;
527         struct runqueue *rq = task_rq(t);
528
529         if (t->sched_info.last_queued)
530                 diff = now - t->sched_info.last_queued;
531         sched_info_dequeued(t);
532         t->sched_info.run_delay += diff;
533         t->sched_info.last_arrival = now;
534         t->sched_info.pcnt++;
535
536         if (!rq)
537                 return;
538
539         rq->rq_sched_info.run_delay += diff;
540         rq->rq_sched_info.pcnt++;
541 }
542
543 /*
544  * Called when a process is queued into either the active or expired
545  * array.  The time is noted and later used to determine how long we
546  * had to wait for us to reach the cpu.  Since the expired queue will
547  * become the active queue after active queue is empty, without dequeuing
548  * and requeuing any tasks, we are interested in queuing to either. It
549  * is unusual but not impossible for tasks to be dequeued and immediately
550  * requeued in the same or another array: this can happen in sched_yield(),
551  * set_user_nice(), and even load_balance() as it moves tasks from runqueue
552  * to runqueue.
553  *
554  * This function is only called from enqueue_task(), but also only updates
555  * the timestamp if it is already not set.  It's assumed that
556  * sched_info_dequeued() will clear that stamp when appropriate.
557  */
558 static inline void sched_info_queued(task_t *t)
559 {
560         if (!t->sched_info.last_queued)
561                 t->sched_info.last_queued = jiffies;
562 }
563
564 /*
565  * Called when a process ceases being the active-running process, either
566  * voluntarily or involuntarily.  Now we can calculate how long we ran.
567  */
568 static inline void sched_info_depart(task_t *t)
569 {
570         struct runqueue *rq = task_rq(t);
571         unsigned long diff = jiffies - t->sched_info.last_arrival;
572
573         t->sched_info.cpu_time += diff;
574
575         if (rq)
576                 rq->rq_sched_info.cpu_time += diff;
577 }
578
579 /*
580  * Called when tasks are switched involuntarily due, typically, to expiring
581  * their time slice.  (This may also be called when switching to or from
582  * the idle task.)  We are only called when prev != next.
583  */
584 static inline void sched_info_switch(task_t *prev, task_t *next)
585 {
586         struct runqueue *rq = task_rq(prev);
587
588         /*
589          * prev now departs the cpu.  It's not interesting to record
590          * stats about how efficient we were at scheduling the idle
591          * process, however.
592          */
593         if (prev != rq->idle)
594                 sched_info_depart(prev);
595
596         if (next != rq->idle)
597                 sched_info_arrive(next);
598 }
599 #else
600 #define sched_info_queued(t)            do { } while (0)
601 #define sched_info_switch(t, next)      do { } while (0)
602 #endif /* CONFIG_SCHEDSTATS */
603
604 /*
605  * Adding/removing a task to/from a priority array:
606  */
607 static void dequeue_task(struct task_struct *p, prio_array_t *array)
608 {
609         BUG_ON(p->state & TASK_ONHOLD);
610         array->nr_active--;
611         list_del(&p->run_list);
612         if (list_empty(array->queue + p->prio))
613                 __clear_bit(p->prio, array->bitmap);
614 }
615
616 static void enqueue_task(struct task_struct *p, prio_array_t *array)
617 {
618         BUG_ON(p->state & TASK_ONHOLD);
619         sched_info_queued(p);
620         list_add_tail(&p->run_list, array->queue + p->prio);
621         __set_bit(p->prio, array->bitmap);
622         array->nr_active++;
623         p->array = array;
624 }
625
626 /*
627  * Put task to the end of the run list without the overhead of dequeue
628  * followed by enqueue.
629  */
630 static void requeue_task(struct task_struct *p, prio_array_t *array)
631 {
632         BUG_ON(p->state & TASK_ONHOLD);
633         list_move_tail(&p->run_list, array->queue + p->prio);
634 }
635
636 static inline void enqueue_task_head(struct task_struct *p, prio_array_t *array)
637 {
638         BUG_ON(p->state & TASK_ONHOLD);
639         list_add(&p->run_list, array->queue + p->prio);
640         __set_bit(p->prio, array->bitmap);
641         array->nr_active++;
642         p->array = array;
643 }
644
645 /*
646  * effective_prio - return the priority that is based on the static
647  * priority but is modified by bonuses/penalties.
648  *
649  * We scale the actual sleep average [0 .... MAX_SLEEP_AVG]
650  * into the -5 ... 0 ... +5 bonus/penalty range.
651  *
652  * We use 25% of the full 0...39 priority range so that:
653  *
654  * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs.
655  * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks.
656  *
657  * Both properties are important to certain workloads.
658  */
659 static int effective_prio(task_t *p)
660 {
661         int bonus, prio;
662         struct vx_info *vxi;
663
664         if (rt_task(p))
665                 return p->prio;
666
667         bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
668
669         prio = p->static_prio - bonus;
670
671         if ((vxi = p->vx_info) &&
672                 vx_info_flags(vxi, VXF_SCHED_PRIO, 0))
673                 prio += vx_effective_vavavoom(vxi, MAX_USER_PRIO);
674
675         if (prio < MAX_RT_PRIO)
676                 prio = MAX_RT_PRIO;
677         if (prio > MAX_PRIO-1)
678                 prio = MAX_PRIO-1;
679         return prio;
680 }
681
682 /*
683  * __activate_task - move a task to the runqueue.
684  */
685 static inline void __activate_task(task_t *p, runqueue_t *rq)
686 {
687         enqueue_task(p, rq->active);
688         rq->nr_running++;
689 }
690
691 /*
692  * __activate_idle_task - move idle task to the _front_ of runqueue.
693  */
694 static inline void __activate_idle_task(task_t *p, runqueue_t *rq)
695 {
696         enqueue_task_head(p, rq->active);
697         rq->nr_running++;
698 }
699
700 static int recalc_task_prio(task_t *p, unsigned long long now)
701 {
702         /* Caller must always ensure 'now >= p->timestamp' */
703         unsigned long long __sleep_time = now - p->timestamp;
704         unsigned long sleep_time;
705
706         if (unlikely(p->policy == SCHED_BATCH))
707                 sleep_time = 0;
708         else {
709                 if (__sleep_time > NS_MAX_SLEEP_AVG)
710                         sleep_time = NS_MAX_SLEEP_AVG;
711                 else
712                         sleep_time = (unsigned long)__sleep_time;
713         }
714
715         if (likely(sleep_time > 0)) {
716                 /*
717                  * User tasks that sleep a long time are categorised as
718                  * idle and will get just interactive status to stay active &
719                  * prevent them suddenly becoming cpu hogs and starving
720                  * other processes.
721                  */
722                 if (p->mm && p->activated != -1 &&
723                         sleep_time > INTERACTIVE_SLEEP(p)) {
724                                 p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG -
725                                                 DEF_TIMESLICE);
726                 } else {
727                         /*
728                          * The lower the sleep avg a task has the more
729                          * rapidly it will rise with sleep time.
730                          */
731                         sleep_time *= (MAX_BONUS - CURRENT_BONUS(p)) ? : 1;
732
733                         /*
734                          * Tasks waking from uninterruptible sleep are
735                          * limited in their sleep_avg rise as they
736                          * are likely to be waiting on I/O
737                          */
738                         if (p->activated == -1 && p->mm) {
739                                 if (p->sleep_avg >= INTERACTIVE_SLEEP(p))
740                                         sleep_time = 0;
741                                 else if (p->sleep_avg + sleep_time >=
742                                                 INTERACTIVE_SLEEP(p)) {
743                                         p->sleep_avg = INTERACTIVE_SLEEP(p);
744                                         sleep_time = 0;
745                                 }
746                         }
747
748                         /*
749                          * This code gives a bonus to interactive tasks.
750                          *
751                          * The boost works by updating the 'average sleep time'
752                          * value here, based on ->timestamp. The more time a
753                          * task spends sleeping, the higher the average gets -
754                          * and the higher the priority boost gets as well.
755                          */
756                         p->sleep_avg += sleep_time;
757
758                         if (p->sleep_avg > NS_MAX_SLEEP_AVG)
759                                 p->sleep_avg = NS_MAX_SLEEP_AVG;
760                 }
761         }
762
763         return effective_prio(p);
764 }
765
766 /*
767  * activate_task - move a task to the runqueue and do priority recalculation
768  *
769  * Update all the scheduling statistics stuff. (sleep average
770  * calculation, priority modifiers, etc.)
771  */
772 static void activate_task(task_t *p, runqueue_t *rq, int local)
773 {
774         unsigned long long now;
775
776         now = sched_clock();
777 #ifdef CONFIG_SMP
778         if (!local) {
779                 /* Compensate for drifting sched_clock */
780                 runqueue_t *this_rq = this_rq();
781                 now = (now - this_rq->timestamp_last_tick)
782                         + rq->timestamp_last_tick;
783         }
784 #endif
785
786         if (!rt_task(p))
787                 p->prio = recalc_task_prio(p, now);
788
789         /*
790          * This checks to make sure it's not an uninterruptible task
791          * that is now waking up.
792          */
793         if (!p->activated) {
794                 /*
795                  * Tasks which were woken up by interrupts (ie. hw events)
796                  * are most likely of interactive nature. So we give them
797                  * the credit of extending their sleep time to the period
798                  * of time they spend on the runqueue, waiting for execution
799                  * on a CPU, first time around:
800                  */
801                 if (in_interrupt())
802                         p->activated = 2;
803                 else {
804                         /*
805                          * Normal first-time wakeups get a credit too for
806                          * on-runqueue time, but it will be weighted down:
807                          */
808                         p->activated = 1;
809                 }
810         }
811         p->timestamp = now;
812
813         vx_activate_task(p);
814         __activate_task(p, rq);
815 }
816
817 /*
818  * deactivate_task - remove a task from the runqueue.
819  */
820 static void __deactivate_task(struct task_struct *p, runqueue_t *rq)
821 {
822         rq->nr_running--;
823         dequeue_task(p, p->array);
824         p->array = NULL;
825 }
826
827 static inline
828 void deactivate_task(struct task_struct *p, runqueue_t *rq)
829 {
830         vx_deactivate_task(p);
831         __deactivate_task(p, rq);
832 }
833
834
835 #ifdef  CONFIG_VSERVER_HARDCPU
836 /*
837  * vx_hold_task - put a task on the hold queue
838  */
839 static inline
840 void vx_hold_task(struct vx_info *vxi,
841         struct task_struct *p, runqueue_t *rq)
842 {
843         __deactivate_task(p, rq);
844         p->state |= TASK_ONHOLD;
845         /* a new one on hold */
846         vx_onhold_inc(vxi);
847         list_add_tail(&p->run_list, &rq->hold_queue);
848 }
849
850 /*
851  * vx_unhold_task - put a task back to the runqueue
852  */
853 static inline
854 void vx_unhold_task(struct vx_info *vxi,
855         struct task_struct *p, runqueue_t *rq)
856 {
857         list_del(&p->run_list);
858         /* one less waiting */
859         vx_onhold_dec(vxi);
860         p->state &= ~TASK_ONHOLD;
861         enqueue_task(p, rq->expired);
862         rq->nr_running++;
863
864         if (p->static_prio < rq->best_expired_prio)
865                 rq->best_expired_prio = p->static_prio;
866 }
867 #else
868 static inline
869 void vx_hold_task(struct vx_info *vxi,
870         struct task_struct *p, runqueue_t *rq)
871 {
872         return;
873 }
874
875 static inline
876 void vx_unhold_task(struct vx_info *vxi,
877         struct task_struct *p, runqueue_t *rq)
878 {
879         return;
880 }
881 #endif /* CONFIG_VSERVER_HARDCPU */
882
883
884 /*
885  * resched_task - mark a task 'to be rescheduled now'.
886  *
887  * On UP this means the setting of the need_resched flag, on SMP it
888  * might also involve a cross-CPU call to trigger the scheduler on
889  * the target CPU.
890  */
891 #ifdef CONFIG_SMP
892 static void resched_task(task_t *p)
893 {
894         int cpu;
895
896         assert_spin_locked(&task_rq(p)->lock);
897
898         if (unlikely(test_tsk_thread_flag(p, TIF_NEED_RESCHED)))
899                 return;
900
901         set_tsk_thread_flag(p, TIF_NEED_RESCHED);
902
903         cpu = task_cpu(p);
904         if (cpu == smp_processor_id())
905                 return;
906
907         /* NEED_RESCHED must be visible before we test POLLING_NRFLAG */
908         smp_mb();
909         if (!test_tsk_thread_flag(p, TIF_POLLING_NRFLAG))
910                 smp_send_reschedule(cpu);
911 }
912 #else
913 static inline void resched_task(task_t *p)
914 {
915         assert_spin_locked(&task_rq(p)->lock);
916         set_tsk_need_resched(p);
917 }
918 #endif
919
920 /**
921  * task_curr - is this task currently executing on a CPU?
922  * @p: the task in question.
923  */
924 inline int task_curr(const task_t *p)
925 {
926         return cpu_curr(task_cpu(p)) == p;
927 }
928
929 #ifdef CONFIG_SMP
930 typedef struct {
931         struct list_head list;
932
933         task_t *task;
934         int dest_cpu;
935
936         struct completion done;
937 } migration_req_t;
938
939 /*
940  * The task's runqueue lock must be held.
941  * Returns true if you have to wait for migration thread.
942  */
943 static int migrate_task(task_t *p, int dest_cpu, migration_req_t *req)
944 {
945         runqueue_t *rq = task_rq(p);
946
947         /*
948          * If the task is not on a runqueue (and not running), then
949          * it is sufficient to simply update the task's cpu field.
950          */
951         if (!p->array && !task_running(rq, p)) {
952                 set_task_cpu(p, dest_cpu);
953                 return 0;
954         }
955
956         init_completion(&req->done);
957         req->task = p;
958         req->dest_cpu = dest_cpu;
959         list_add(&req->list, &rq->migration_queue);
960         return 1;
961 }
962
963 /*
964  * wait_task_inactive - wait for a thread to unschedule.
965  *
966  * The caller must ensure that the task *will* unschedule sometime soon,
967  * else this function might spin for a *long* time. This function can't
968  * be called with interrupts off, or it may introduce deadlock with
969  * smp_call_function() if an IPI is sent by the same process we are
970  * waiting to become inactive.
971  */
972 void wait_task_inactive(task_t *p)
973 {
974         unsigned long flags;
975         runqueue_t *rq;
976         int preempted;
977
978 repeat:
979         rq = task_rq_lock(p, &flags);
980         /* Must be off runqueue entirely, not preempted. */
981         if (unlikely(p->array || task_running(rq, p))) {
982                 /* If it's preempted, we yield.  It could be a while. */
983                 preempted = !task_running(rq, p);
984                 task_rq_unlock(rq, &flags);
985                 cpu_relax();
986                 if (preempted)
987                         yield();
988                 goto repeat;
989         }
990         task_rq_unlock(rq, &flags);
991 }
992
993 /***
994  * kick_process - kick a running thread to enter/exit the kernel
995  * @p: the to-be-kicked thread
996  *
997  * Cause a process which is running on another CPU to enter
998  * kernel-mode, without any delay. (to get signals handled.)
999  *
1000  * NOTE: this function doesnt have to take the runqueue lock,
1001  * because all it wants to ensure is that the remote task enters
1002  * the kernel. If the IPI races and the task has been migrated
1003  * to another CPU then no harm is done and the purpose has been
1004  * achieved as well.
1005  */
1006 void kick_process(task_t *p)
1007 {
1008         int cpu;
1009
1010         preempt_disable();
1011         cpu = task_cpu(p);
1012         if ((cpu != smp_processor_id()) && task_curr(p))
1013                 smp_send_reschedule(cpu);
1014         preempt_enable();
1015 }
1016
1017 /*
1018  * Return a low guess at the load of a migration-source cpu.
1019  *
1020  * We want to under-estimate the load of migration sources, to
1021  * balance conservatively.
1022  */
1023 static inline unsigned long source_load(int cpu, int type)
1024 {
1025         runqueue_t *rq = cpu_rq(cpu);
1026         unsigned long load_now = rq->nr_running * SCHED_LOAD_SCALE;
1027         if (type == 0)
1028                 return load_now;
1029
1030         return min(rq->cpu_load[type-1], load_now);
1031 }
1032
1033 /*
1034  * Return a high guess at the load of a migration-target cpu
1035  */
1036 static inline unsigned long target_load(int cpu, int type)
1037 {
1038         runqueue_t *rq = cpu_rq(cpu);
1039         unsigned long load_now = rq->nr_running * SCHED_LOAD_SCALE;
1040         if (type == 0)
1041                 return load_now;
1042
1043         return max(rq->cpu_load[type-1], load_now);
1044 }
1045
1046 /*
1047  * find_idlest_group finds and returns the least busy CPU group within the
1048  * domain.
1049  */
1050 static struct sched_group *
1051 find_idlest_group(struct sched_domain *sd, struct task_struct *p, int this_cpu)
1052 {
1053         struct sched_group *idlest = NULL, *this = NULL, *group = sd->groups;
1054         unsigned long min_load = ULONG_MAX, this_load = 0;
1055         int load_idx = sd->forkexec_idx;
1056         int imbalance = 100 + (sd->imbalance_pct-100)/2;
1057
1058         do {
1059                 unsigned long load, avg_load;
1060                 int local_group;
1061                 int i;
1062
1063                 /* Skip over this group if it has no CPUs allowed */
1064                 if (!cpus_intersects(group->cpumask, p->cpus_allowed))
1065                         goto nextgroup;
1066
1067                 local_group = cpu_isset(this_cpu, group->cpumask);
1068
1069                 /* Tally up the load of all CPUs in the group */
1070                 avg_load = 0;
1071
1072                 for_each_cpu_mask(i, group->cpumask) {
1073                         /* Bias balancing toward cpus of our domain */
1074                         if (local_group)
1075                                 load = source_load(i, load_idx);
1076                         else
1077                                 load = target_load(i, load_idx);
1078
1079                         avg_load += load;
1080                 }
1081
1082                 /* Adjust by relative CPU power of the group */
1083                 avg_load = (avg_load * SCHED_LOAD_SCALE) / group->cpu_power;
1084
1085                 if (local_group) {
1086                         this_load = avg_load;
1087                         this = group;
1088                 } else if (avg_load < min_load) {
1089                         min_load = avg_load;
1090                         idlest = group;
1091                 }
1092 nextgroup:
1093                 group = group->next;
1094         } while (group != sd->groups);
1095
1096         if (!idlest || 100*this_load < imbalance*min_load)
1097                 return NULL;
1098         return idlest;
1099 }
1100
1101 /*
1102  * find_idlest_queue - find the idlest runqueue among the cpus in group.
1103  */
1104 static int
1105 find_idlest_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
1106 {
1107         cpumask_t tmp;
1108         unsigned long load, min_load = ULONG_MAX;
1109         int idlest = -1;
1110         int i;
1111
1112         /* Traverse only the allowed CPUs */
1113         cpus_and(tmp, group->cpumask, p->cpus_allowed);
1114
1115         for_each_cpu_mask(i, tmp) {
1116                 load = source_load(i, 0);
1117
1118                 if (load < min_load || (load == min_load && i == this_cpu)) {
1119                         min_load = load;
1120                         idlest = i;
1121                 }
1122         }
1123
1124         return idlest;
1125 }
1126
1127 /*
1128  * sched_balance_self: balance the current task (running on cpu) in domains
1129  * that have the 'flag' flag set. In practice, this is SD_BALANCE_FORK and
1130  * SD_BALANCE_EXEC.
1131  *
1132  * Balance, ie. select the least loaded group.
1133  *
1134  * Returns the target CPU number, or the same CPU if no balancing is needed.
1135  *
1136  * preempt must be disabled.
1137  */
1138 static int sched_balance_self(int cpu, int flag)
1139 {
1140         struct task_struct *t = current;
1141         struct sched_domain *tmp, *sd = NULL;
1142
1143         for_each_domain(cpu, tmp)
1144                 if (tmp->flags & flag)
1145                         sd = tmp;
1146
1147         while (sd) {
1148                 cpumask_t span;
1149                 struct sched_group *group;
1150                 int new_cpu;
1151                 int weight;
1152
1153                 span = sd->span;
1154                 group = find_idlest_group(sd, t, cpu);
1155                 if (!group)
1156                         goto nextlevel;
1157
1158                 new_cpu = find_idlest_cpu(group, t, cpu);
1159                 if (new_cpu == -1 || new_cpu == cpu)
1160                         goto nextlevel;
1161
1162                 /* Now try balancing at a lower domain level */
1163                 cpu = new_cpu;
1164 nextlevel:
1165                 sd = NULL;
1166                 weight = cpus_weight(span);
1167                 for_each_domain(cpu, tmp) {
1168                         if (weight <= cpus_weight(tmp->span))
1169                                 break;
1170                         if (tmp->flags & flag)
1171                                 sd = tmp;
1172                 }
1173                 /* while loop will break here if sd == NULL */
1174         }
1175
1176         return cpu;
1177 }
1178
1179 #endif /* CONFIG_SMP */
1180
1181 /*
1182  * wake_idle() will wake a task on an idle cpu if task->cpu is
1183  * not idle and an idle cpu is available.  The span of cpus to
1184  * search starts with cpus closest then further out as needed,
1185  * so we always favor a closer, idle cpu.
1186  *
1187  * Returns the CPU we should wake onto.
1188  */
1189 #if defined(ARCH_HAS_SCHED_WAKE_IDLE)
1190 static int wake_idle(int cpu, task_t *p)
1191 {
1192         cpumask_t tmp;
1193         struct sched_domain *sd;
1194         int i;
1195
1196         if (idle_cpu(cpu))
1197                 return cpu;
1198
1199         for_each_domain(cpu, sd) {
1200                 if (sd->flags & SD_WAKE_IDLE) {
1201                         cpus_and(tmp, sd->span, p->cpus_allowed);
1202                         for_each_cpu_mask(i, tmp) {
1203                                 if (idle_cpu(i))
1204                                         return i;
1205                         }
1206                 }
1207                 else
1208                         break;
1209         }
1210         return cpu;
1211 }
1212 #else
1213 static inline int wake_idle(int cpu, task_t *p)
1214 {
1215         return cpu;
1216 }
1217 #endif
1218
1219 /***
1220  * try_to_wake_up - wake up a thread
1221  * @p: the to-be-woken-up thread
1222  * @state: the mask of task states that can be woken
1223  * @sync: do a synchronous wakeup?
1224  *
1225  * Put it on the run-queue if it's not already there. The "current"
1226  * thread is always on the run-queue (except when the actual
1227  * re-schedule is in progress), and as such you're allowed to do
1228  * the simpler "current->state = TASK_RUNNING" to mark yourself
1229  * runnable without the overhead of this.
1230  *
1231  * returns failure only if the task is already active.
1232  */
1233 static int try_to_wake_up(task_t *p, unsigned int state, int sync)
1234 {
1235         int cpu, this_cpu, success = 0;
1236         unsigned long flags;
1237         long old_state;
1238         runqueue_t *rq;
1239 #ifdef CONFIG_SMP
1240         unsigned long load, this_load;
1241         struct sched_domain *sd, *this_sd = NULL;
1242         int new_cpu;
1243 #endif
1244
1245         rq = task_rq_lock(p, &flags);
1246         old_state = p->state;
1247
1248         /* we need to unhold suspended tasks */
1249         if (old_state & TASK_ONHOLD) {
1250                 vx_unhold_task(p->vx_info, p, rq);
1251                 old_state = p->state;
1252         }
1253         if (!(old_state & state))
1254                 goto out;
1255
1256         if (p->array)
1257                 goto out_running;
1258
1259         cpu = task_cpu(p);
1260         this_cpu = smp_processor_id();
1261
1262 #ifdef CONFIG_SMP
1263         if (unlikely(task_running(rq, p)))
1264                 goto out_activate;
1265
1266         new_cpu = cpu;
1267
1268         schedstat_inc(rq, ttwu_cnt);
1269         if (cpu == this_cpu) {
1270                 schedstat_inc(rq, ttwu_local);
1271                 goto out_set_cpu;
1272         }
1273
1274         for_each_domain(this_cpu, sd) {
1275                 if (cpu_isset(cpu, sd->span)) {
1276                         schedstat_inc(sd, ttwu_wake_remote);
1277                         this_sd = sd;
1278                         break;
1279                 }
1280         }
1281
1282         if (unlikely(!cpu_isset(this_cpu, p->cpus_allowed)))
1283                 goto out_set_cpu;
1284
1285         /*
1286          * Check for affine wakeup and passive balancing possibilities.
1287          */
1288         if (this_sd) {
1289                 int idx = this_sd->wake_idx;
1290                 unsigned int imbalance;
1291
1292                 imbalance = 100 + (this_sd->imbalance_pct - 100) / 2;
1293
1294                 load = source_load(cpu, idx);
1295                 this_load = target_load(this_cpu, idx);
1296
1297                 new_cpu = this_cpu; /* Wake to this CPU if we can */
1298
1299                 if (this_sd->flags & SD_WAKE_AFFINE) {
1300                         unsigned long tl = this_load;
1301                         /*
1302                          * If sync wakeup then subtract the (maximum possible)
1303                          * effect of the currently running task from the load
1304                          * of the current CPU:
1305                          */
1306                         if (sync)
1307                                 tl -= SCHED_LOAD_SCALE;
1308
1309                         if ((tl <= load &&
1310                                 tl + target_load(cpu, idx) <= SCHED_LOAD_SCALE) ||
1311                                 100*(tl + SCHED_LOAD_SCALE) <= imbalance*load) {
1312                                 /*
1313                                  * This domain has SD_WAKE_AFFINE and
1314                                  * p is cache cold in this domain, and
1315                                  * there is no bad imbalance.
1316                                  */
1317                                 schedstat_inc(this_sd, ttwu_move_affine);
1318                                 goto out_set_cpu;
1319                         }
1320                 }
1321
1322                 /*
1323                  * Start passive balancing when half the imbalance_pct
1324                  * limit is reached.
1325                  */
1326                 if (this_sd->flags & SD_WAKE_BALANCE) {
1327                         if (imbalance*this_load <= 100*load) {
1328                                 schedstat_inc(this_sd, ttwu_move_balance);
1329                                 goto out_set_cpu;
1330                         }
1331                 }
1332         }
1333
1334         new_cpu = cpu; /* Could not wake to this_cpu. Wake to cpu instead */
1335 out_set_cpu:
1336         new_cpu = wake_idle(new_cpu, p);
1337         if (new_cpu != cpu) {
1338                 set_task_cpu(p, new_cpu);
1339                 task_rq_unlock(rq, &flags);
1340                 /* might preempt at this point */
1341                 rq = task_rq_lock(p, &flags);
1342                 old_state = p->state;
1343                 if (!(old_state & state))
1344                         goto out;
1345                 if (p->array)
1346                         goto out_running;
1347
1348                 this_cpu = smp_processor_id();
1349                 cpu = task_cpu(p);
1350         }
1351
1352 out_activate:
1353 #endif /* CONFIG_SMP */
1354         if (old_state == TASK_UNINTERRUPTIBLE) {
1355                 rq->nr_uninterruptible--;
1356                 /*
1357                  * Tasks on involuntary sleep don't earn
1358                  * sleep_avg beyond just interactive state.
1359                  */
1360                 p->activated = -1;
1361         }
1362
1363         /*
1364          * Tasks that have marked their sleep as noninteractive get
1365          * woken up without updating their sleep average. (i.e. their
1366          * sleep is handled in a priority-neutral manner, no priority
1367          * boost and no penalty.)
1368          */
1369         if (old_state & TASK_NONINTERACTIVE) {
1370                 vx_activate_task(p);
1371                 __activate_task(p, rq);
1372         } else
1373                 activate_task(p, rq, cpu == this_cpu);
1374
1375         /* this is to get the accounting behind the load update */
1376         if (old_state & TASK_UNINTERRUPTIBLE)
1377                 vx_uninterruptible_dec(p);
1378
1379         /*
1380          * Sync wakeups (i.e. those types of wakeups where the waker
1381          * has indicated that it will leave the CPU in short order)
1382          * don't trigger a preemption, if the woken up task will run on
1383          * this cpu. (in this case the 'I will reschedule' promise of
1384          * the waker guarantees that the freshly woken up task is going
1385          * to be considered on this CPU.)
1386          */
1387         if (!sync || cpu != this_cpu) {
1388                 if (TASK_PREEMPTS_CURR(p, rq))
1389                         resched_task(rq->curr);
1390         }
1391         success = 1;
1392
1393 out_running:
1394         p->state = TASK_RUNNING;
1395 out:
1396         task_rq_unlock(rq, &flags);
1397
1398         return success;
1399 }
1400
1401 int fastcall wake_up_process(task_t *p)
1402 {
1403         return try_to_wake_up(p, TASK_STOPPED | TASK_TRACED |
1404                                  TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE, 0);
1405 }
1406
1407 EXPORT_SYMBOL(wake_up_process);
1408
1409 int fastcall wake_up_state(task_t *p, unsigned int state)
1410 {
1411         return try_to_wake_up(p, state, 0);
1412 }
1413
1414 /*
1415  * Perform scheduler related setup for a newly forked process p.
1416  * p is forked by current.
1417  */
1418 void fastcall sched_fork(task_t *p, int clone_flags)
1419 {
1420         int cpu = get_cpu();
1421
1422 #ifdef CONFIG_SMP
1423         cpu = sched_balance_self(cpu, SD_BALANCE_FORK);
1424 #endif
1425         set_task_cpu(p, cpu);
1426
1427         /*
1428          * We mark the process as running here, but have not actually
1429          * inserted it onto the runqueue yet. This guarantees that
1430          * nobody will actually run it, and a signal or other external
1431          * event cannot wake it up and insert it on the runqueue either.
1432          */
1433         p->state = TASK_RUNNING;
1434         INIT_LIST_HEAD(&p->run_list);
1435         p->array = NULL;
1436 #ifdef CONFIG_SCHEDSTATS
1437         memset(&p->sched_info, 0, sizeof(p->sched_info));
1438 #endif
1439 #if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW)
1440         p->oncpu = 0;
1441 #endif
1442 #ifdef CONFIG_PREEMPT
1443         /* Want to start with kernel preemption disabled. */
1444         task_thread_info(p)->preempt_count = 1;
1445 #endif
1446         /*
1447          * Share the timeslice between parent and child, thus the
1448          * total amount of pending timeslices in the system doesn't change,
1449          * resulting in more scheduling fairness.
1450          */
1451         local_irq_disable();
1452         p->time_slice = (current->time_slice + 1) >> 1;
1453         /*
1454          * The remainder of the first timeslice might be recovered by
1455          * the parent if the child exits early enough.
1456          */
1457         p->first_time_slice = 1;
1458         current->time_slice >>= 1;
1459         p->timestamp = sched_clock();
1460         if (unlikely(!current->time_slice)) {
1461                 /*
1462                  * This case is rare, it happens when the parent has only
1463                  * a single jiffy left from its timeslice. Taking the
1464                  * runqueue lock is not a problem.
1465                  */
1466                 current->time_slice = 1;
1467                 scheduler_tick();
1468         }
1469         local_irq_enable();
1470         put_cpu();
1471 }
1472
1473 /*
1474  * wake_up_new_task - wake up a newly created task for the first time.
1475  *
1476  * This function will do some initial scheduler statistics housekeeping
1477  * that must be done for every newly created context, then puts the task
1478  * on the runqueue and wakes it.
1479  */
1480 void fastcall wake_up_new_task(task_t *p, unsigned long clone_flags)
1481 {
1482         unsigned long flags;
1483         int this_cpu, cpu;
1484         runqueue_t *rq, *this_rq;
1485
1486         rq = task_rq_lock(p, &flags);
1487         BUG_ON(p->state != TASK_RUNNING);
1488         this_cpu = smp_processor_id();
1489         cpu = task_cpu(p);
1490
1491         /*
1492          * We decrease the sleep average of forking parents
1493          * and children as well, to keep max-interactive tasks
1494          * from forking tasks that are max-interactive. The parent
1495          * (current) is done further down, under its lock.
1496          */
1497         p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) *
1498                 CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
1499
1500         p->prio = effective_prio(p);
1501
1502         vx_activate_task(p);
1503         if (likely(cpu == this_cpu)) {
1504                 if (!(clone_flags & CLONE_VM)) {
1505                         /*
1506                          * The VM isn't cloned, so we're in a good position to
1507                          * do child-runs-first in anticipation of an exec. This
1508                          * usually avoids a lot of COW overhead.
1509                          */
1510                         if (unlikely(!current->array))
1511                                 __activate_task(p, rq);
1512                         else {
1513                                 p->prio = current->prio;
1514                                 BUG_ON(p->state & TASK_ONHOLD);
1515                                 list_add_tail(&p->run_list, &current->run_list);
1516                                 p->array = current->array;
1517                                 p->array->nr_active++;
1518                                 rq->nr_running++;
1519                         }
1520                         set_need_resched();
1521                 } else
1522                         /* Run child last */
1523                         __activate_task(p, rq);
1524                 /*
1525                  * We skip the following code due to cpu == this_cpu
1526                  *
1527                  *   task_rq_unlock(rq, &flags);
1528                  *   this_rq = task_rq_lock(current, &flags);
1529                  */
1530                 this_rq = rq;
1531         } else {
1532                 this_rq = cpu_rq(this_cpu);
1533
1534                 /*
1535                  * Not the local CPU - must adjust timestamp. This should
1536                  * get optimised away in the !CONFIG_SMP case.
1537                  */
1538                 p->timestamp = (p->timestamp - this_rq->timestamp_last_tick)
1539                                         + rq->timestamp_last_tick;
1540                 __activate_task(p, rq);
1541                 if (TASK_PREEMPTS_CURR(p, rq))
1542                         resched_task(rq->curr);
1543
1544                 /*
1545                  * Parent and child are on different CPUs, now get the
1546                  * parent runqueue to update the parent's ->sleep_avg:
1547                  */
1548                 task_rq_unlock(rq, &flags);
1549                 this_rq = task_rq_lock(current, &flags);
1550         }
1551         current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) *
1552                 PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
1553         task_rq_unlock(this_rq, &flags);
1554 }
1555
1556 /*
1557  * Potentially available exiting-child timeslices are
1558  * retrieved here - this way the parent does not get
1559  * penalized for creating too many threads.
1560  *
1561  * (this cannot be used to 'generate' timeslices
1562  * artificially, because any timeslice recovered here
1563  * was given away by the parent in the first place.)
1564  */
1565 void fastcall sched_exit(task_t *p)
1566 {
1567         unsigned long flags;
1568         runqueue_t *rq;
1569
1570         /*
1571          * If the child was a (relative-) CPU hog then decrease
1572          * the sleep_avg of the parent as well.
1573          */
1574         rq = task_rq_lock(p->parent, &flags);
1575         if (p->first_time_slice && task_cpu(p) == task_cpu(p->parent)) {
1576                 p->parent->time_slice += p->time_slice;
1577                 if (unlikely(p->parent->time_slice > task_timeslice(p)))
1578                         p->parent->time_slice = task_timeslice(p);
1579         }
1580         if (p->sleep_avg < p->parent->sleep_avg)
1581                 p->parent->sleep_avg = p->parent->sleep_avg /
1582                 (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg /
1583                 (EXIT_WEIGHT + 1);
1584         task_rq_unlock(rq, &flags);
1585 }
1586
1587 /**
1588  * prepare_task_switch - prepare to switch tasks
1589  * @rq: the runqueue preparing to switch
1590  * @next: the task we are going to switch to.
1591  *
1592  * This is called with the rq lock held and interrupts off. It must
1593  * be paired with a subsequent finish_task_switch after the context
1594  * switch.
1595  *
1596  * prepare_task_switch sets up locking and calls architecture specific
1597  * hooks.
1598  */
1599 static inline void prepare_task_switch(runqueue_t *rq, task_t *next)
1600 {
1601         prepare_lock_switch(rq, next);
1602         prepare_arch_switch(next);
1603 }
1604
1605 /**
1606  * finish_task_switch - clean up after a task-switch
1607  * @rq: runqueue associated with task-switch
1608  * @prev: the thread we just switched away from.
1609  *
1610  * finish_task_switch must be called after the context switch, paired
1611  * with a prepare_task_switch call before the context switch.
1612  * finish_task_switch will reconcile locking set up by prepare_task_switch,
1613  * and do any other architecture-specific cleanup actions.
1614  *
1615  * Note that we may have delayed dropping an mm in context_switch(). If
1616  * so, we finish that here outside of the runqueue lock.  (Doing it
1617  * with the lock held can cause deadlocks; see schedule() for
1618  * details.)
1619  */
1620 static inline void finish_task_switch(runqueue_t *rq, task_t *prev)
1621         __releases(rq->lock)
1622 {
1623         struct mm_struct *mm = rq->prev_mm;
1624         unsigned long prev_task_flags;
1625
1626         rq->prev_mm = NULL;
1627
1628         /*
1629          * A task struct has one reference for the use as "current".
1630          * If a task dies, then it sets EXIT_ZOMBIE in tsk->exit_state and
1631          * calls schedule one last time. The schedule call will never return,
1632          * and the scheduled task must drop that reference.
1633          * The test for EXIT_ZOMBIE must occur while the runqueue locks are
1634          * still held, otherwise prev could be scheduled on another cpu, die
1635          * there before we look at prev->state, and then the reference would
1636          * be dropped twice.
1637          *              Manfred Spraul <manfred@colorfullife.com>
1638          */
1639         prev_task_flags = prev->flags;
1640         finish_arch_switch(prev);
1641         finish_lock_switch(rq, prev);
1642         if (mm)
1643                 mmdrop(mm);
1644         if (unlikely(prev_task_flags & PF_DEAD))
1645                 put_task_struct(prev);
1646 }
1647
1648 /**
1649  * schedule_tail - first thing a freshly forked thread must call.
1650  * @prev: the thread we just switched away from.
1651  */
1652 asmlinkage void schedule_tail(task_t *prev)
1653         __releases(rq->lock)
1654 {
1655         runqueue_t *rq = this_rq();
1656         finish_task_switch(rq, prev);
1657 #ifdef __ARCH_WANT_UNLOCKED_CTXSW
1658         /* In this case, finish_task_switch does not reenable preemption */
1659         preempt_enable();
1660 #endif
1661         if (current->set_child_tid)
1662                 put_user(current->pid, current->set_child_tid);
1663 }
1664
1665 /*
1666  * context_switch - switch to the new MM and the new
1667  * thread's register state.
1668  */
1669 static inline
1670 task_t * context_switch(runqueue_t *rq, task_t *prev, task_t *next)
1671 {
1672         struct mm_struct *mm = next->mm;
1673         struct mm_struct *oldmm = prev->active_mm;
1674
1675         if (unlikely(!mm)) {
1676                 next->active_mm = oldmm;
1677                 atomic_inc(&oldmm->mm_count);
1678                 enter_lazy_tlb(oldmm, next);
1679         } else
1680                 switch_mm(oldmm, mm, next);
1681
1682         if (unlikely(!prev->mm)) {
1683                 prev->active_mm = NULL;
1684                 WARN_ON(rq->prev_mm);
1685                 rq->prev_mm = oldmm;
1686         }
1687
1688         /* Here we just switch the register state and the stack. */
1689         switch_to(prev, next, prev);
1690
1691         return prev;
1692 }
1693
1694 /*
1695  * nr_running, nr_uninterruptible and nr_context_switches:
1696  *
1697  * externally visible scheduler statistics: current number of runnable
1698  * threads, current number of uninterruptible-sleeping threads, total
1699  * number of context switches performed since bootup.
1700  */
1701 unsigned long nr_running(void)
1702 {
1703         unsigned long i, sum = 0;
1704
1705         for_each_online_cpu(i)
1706                 sum += cpu_rq(i)->nr_running;
1707
1708         return sum;
1709 }
1710
1711 unsigned long nr_uninterruptible(void)
1712 {
1713         unsigned long i, sum = 0;
1714
1715         for_each_cpu(i)
1716                 sum += cpu_rq(i)->nr_uninterruptible;
1717
1718         /*
1719          * Since we read the counters lockless, it might be slightly
1720          * inaccurate. Do not allow it to go below zero though:
1721          */
1722         if (unlikely((long)sum < 0))
1723                 sum = 0;
1724
1725         return sum;
1726 }
1727
1728 unsigned long long nr_context_switches(void)
1729 {
1730         unsigned long long i, sum = 0;
1731
1732         for_each_cpu(i)
1733                 sum += cpu_rq(i)->nr_switches;
1734
1735         return sum;
1736 }
1737
1738 unsigned long nr_iowait(void)
1739 {
1740         unsigned long i, sum = 0;
1741
1742         for_each_cpu(i)
1743                 sum += atomic_read(&cpu_rq(i)->nr_iowait);
1744
1745         return sum;
1746 }
1747
1748 #ifdef CONFIG_SMP
1749
1750 /*
1751  * double_rq_lock - safely lock two runqueues
1752  *
1753  * We must take them in cpu order to match code in
1754  * dependent_sleeper and wake_dependent_sleeper.
1755  *
1756  * Note this does not disable interrupts like task_rq_lock,
1757  * you need to do so manually before calling.
1758  */
1759 static void double_rq_lock(runqueue_t *rq1, runqueue_t *rq2)
1760         __acquires(rq1->lock)
1761         __acquires(rq2->lock)
1762 {
1763         if (rq1 == rq2) {
1764                 spin_lock(&rq1->lock);
1765                 __acquire(rq2->lock);   /* Fake it out ;) */
1766         } else {
1767                 if (rq1->cpu < rq2->cpu) {
1768                         spin_lock(&rq1->lock);
1769                         spin_lock(&rq2->lock);
1770                 } else {
1771                         spin_lock(&rq2->lock);
1772                         spin_lock(&rq1->lock);
1773                 }
1774         }
1775 }
1776
1777 /*
1778  * double_rq_unlock - safely unlock two runqueues
1779  *
1780  * Note this does not restore interrupts like task_rq_unlock,
1781  * you need to do so manually after calling.
1782  */
1783 static void double_rq_unlock(runqueue_t *rq1, runqueue_t *rq2)
1784         __releases(rq1->lock)
1785         __releases(rq2->lock)
1786 {
1787         spin_unlock(&rq1->lock);
1788         if (rq1 != rq2)
1789                 spin_unlock(&rq2->lock);
1790         else
1791                 __release(rq2->lock);
1792 }
1793
1794 /*
1795  * double_lock_balance - lock the busiest runqueue, this_rq is locked already.
1796  */
1797 static void double_lock_balance(runqueue_t *this_rq, runqueue_t *busiest)
1798         __releases(this_rq->lock)
1799         __acquires(busiest->lock)
1800         __acquires(this_rq->lock)
1801 {
1802         if (unlikely(!spin_trylock(&busiest->lock))) {
1803                 if (busiest->cpu < this_rq->cpu) {
1804                         spin_unlock(&this_rq->lock);
1805                         spin_lock(&busiest->lock);
1806                         spin_lock(&this_rq->lock);
1807                 } else
1808                         spin_lock(&busiest->lock);
1809         }
1810 }
1811
1812 /*
1813  * If dest_cpu is allowed for this process, migrate the task to it.
1814  * This is accomplished by forcing the cpu_allowed mask to only
1815  * allow dest_cpu, which will force the cpu onto dest_cpu.  Then
1816  * the cpu_allowed mask is restored.
1817  */
1818 static void sched_migrate_task(task_t *p, int dest_cpu)
1819 {
1820         migration_req_t req;
1821         runqueue_t *rq;
1822         unsigned long flags;
1823
1824         rq = task_rq_lock(p, &flags);
1825         if (!cpu_isset(dest_cpu, p->cpus_allowed)
1826             || unlikely(cpu_is_offline(dest_cpu)))
1827                 goto out;
1828
1829         /* force the process onto the specified CPU */
1830         if (migrate_task(p, dest_cpu, &req)) {
1831                 /* Need to wait for migration thread (might exit: take ref). */
1832                 struct task_struct *mt = rq->migration_thread;
1833                 get_task_struct(mt);
1834                 task_rq_unlock(rq, &flags);
1835                 wake_up_process(mt);
1836                 put_task_struct(mt);
1837                 wait_for_completion(&req.done);
1838                 return;
1839         }
1840 out:
1841         task_rq_unlock(rq, &flags);
1842 }
1843
1844 /*
1845  * sched_exec - execve() is a valuable balancing opportunity, because at
1846  * this point the task has the smallest effective memory and cache footprint.
1847  */
1848 void sched_exec(void)
1849 {
1850         int new_cpu, this_cpu = get_cpu();
1851         new_cpu = sched_balance_self(this_cpu, SD_BALANCE_EXEC);
1852         put_cpu();
1853         if (new_cpu != this_cpu)
1854                 sched_migrate_task(current, new_cpu);
1855 }
1856
1857 /*
1858  * pull_task - move a task from a remote runqueue to the local runqueue.
1859  * Both runqueues must be locked.
1860  */
1861 static
1862 void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p,
1863                runqueue_t *this_rq, prio_array_t *this_array, int this_cpu)
1864 {
1865         dequeue_task(p, src_array);
1866         src_rq->nr_running--;
1867         set_task_cpu(p, this_cpu);
1868         this_rq->nr_running++;
1869         enqueue_task(p, this_array);
1870         p->timestamp = (p->timestamp - src_rq->timestamp_last_tick)
1871                                 + this_rq->timestamp_last_tick;
1872         /*
1873          * Note that idle threads have a prio of MAX_PRIO, for this test
1874          * to be always true for them.
1875          */
1876         if (TASK_PREEMPTS_CURR(p, this_rq))
1877                 resched_task(this_rq->curr);
1878 }
1879
1880 /*
1881  * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
1882  */
1883 static
1884 int can_migrate_task(task_t *p, runqueue_t *rq, int this_cpu,
1885                      struct sched_domain *sd, enum idle_type idle,
1886                      int *all_pinned)
1887 {
1888         /*
1889          * We do not migrate tasks that are:
1890          * 1) running (obviously), or
1891          * 2) cannot be migrated to this CPU due to cpus_allowed, or
1892          * 3) are cache-hot on their current CPU.
1893          */
1894         if (!cpu_isset(this_cpu, p->cpus_allowed))
1895                 return 0;
1896         *all_pinned = 0;
1897
1898         if (task_running(rq, p))
1899                 return 0;
1900
1901         /*
1902          * Aggressive migration if:
1903          * 1) task is cache cold, or
1904          * 2) too many balance attempts have failed.
1905          */
1906
1907         if (sd->nr_balance_failed > sd->cache_nice_tries)
1908                 return 1;
1909
1910         if (task_hot(p, rq->timestamp_last_tick, sd))
1911                 return 0;
1912         return 1;
1913 }
1914
1915 /*
1916  * move_tasks tries to move up to max_nr_move tasks from busiest to this_rq,
1917  * as part of a balancing operation within "domain". Returns the number of
1918  * tasks moved.
1919  *
1920  * Called with both runqueues locked.
1921  */
1922 static int move_tasks(runqueue_t *this_rq, int this_cpu, runqueue_t *busiest,
1923                       unsigned long max_nr_move, struct sched_domain *sd,
1924                       enum idle_type idle, int *all_pinned)
1925 {
1926         prio_array_t *array, *dst_array;
1927         struct list_head *head, *curr;
1928         int idx, pulled = 0, pinned = 0;
1929         task_t *tmp;
1930
1931         if (max_nr_move == 0)
1932                 goto out;
1933
1934         pinned = 1;
1935
1936         /*
1937          * We first consider expired tasks. Those will likely not be
1938          * executed in the near future, and they are most likely to
1939          * be cache-cold, thus switching CPUs has the least effect
1940          * on them.
1941          */
1942         if (busiest->expired->nr_active) {
1943                 array = busiest->expired;
1944                 dst_array = this_rq->expired;
1945         } else {
1946                 array = busiest->active;
1947                 dst_array = this_rq->active;
1948         }
1949
1950 new_array:
1951         /* Start searching at priority 0: */
1952         idx = 0;
1953 skip_bitmap:
1954         if (!idx)
1955                 idx = sched_find_first_bit(array->bitmap);
1956         else
1957                 idx = find_next_bit(array->bitmap, MAX_PRIO, idx);
1958         if (idx >= MAX_PRIO) {
1959                 if (array == busiest->expired && busiest->active->nr_active) {
1960                         array = busiest->active;
1961                         dst_array = this_rq->active;
1962                         goto new_array;
1963                 }
1964                 goto out;
1965         }
1966
1967         head = array->queue + idx;
1968         curr = head->prev;
1969 skip_queue:
1970         tmp = list_entry(curr, task_t, run_list);
1971
1972         curr = curr->prev;
1973
1974         if (!can_migrate_task(tmp, busiest, this_cpu, sd, idle, &pinned)) {
1975                 if (curr != head)
1976                         goto skip_queue;
1977                 idx++;
1978                 goto skip_bitmap;
1979         }
1980
1981 #ifdef CONFIG_SCHEDSTATS
1982         if (task_hot(tmp, busiest->timestamp_last_tick, sd))
1983                 schedstat_inc(sd, lb_hot_gained[idle]);
1984 #endif
1985
1986         pull_task(busiest, array, tmp, this_rq, dst_array, this_cpu);
1987         pulled++;
1988
1989         /* We only want to steal up to the prescribed number of tasks. */
1990         if (pulled < max_nr_move) {
1991                 if (curr != head)
1992                         goto skip_queue;
1993                 idx++;
1994                 goto skip_bitmap;
1995         }
1996 out:
1997         /*
1998          * Right now, this is the only place pull_task() is called,
1999          * so we can safely collect pull_task() stats here rather than
2000          * inside pull_task().
2001          */
2002         schedstat_add(sd, lb_gained[idle], pulled);
2003
2004         if (all_pinned)
2005                 *all_pinned = pinned;
2006         return pulled;
2007 }
2008
2009 /*
2010  * find_busiest_group finds and returns the busiest CPU group within the
2011  * domain. It calculates and returns the number of tasks which should be
2012  * moved to restore balance via the imbalance parameter.
2013  */
2014 static struct sched_group *
2015 find_busiest_group(struct sched_domain *sd, int this_cpu,
2016                    unsigned long *imbalance, enum idle_type idle, int *sd_idle,
2017                    cpumask_t *cpus)
2018 {
2019         struct sched_group *busiest = NULL, *this = NULL, *group = sd->groups;
2020         unsigned long max_load, avg_load, total_load, this_load, total_pwr;
2021         unsigned long max_pull;
2022         int load_idx;
2023
2024         max_load = this_load = total_load = total_pwr = 0;
2025         if (idle == NOT_IDLE)
2026                 load_idx = sd->busy_idx;
2027         else if (idle == NEWLY_IDLE)
2028                 load_idx = sd->newidle_idx;
2029         else
2030                 load_idx = sd->idle_idx;
2031
2032         do {
2033                 unsigned long load;
2034                 int local_group;
2035                 int i;
2036
2037                 local_group = cpu_isset(this_cpu, group->cpumask);
2038
2039                 /* Tally up the load of all CPUs in the group */
2040                 avg_load = 0;
2041
2042                 for_each_cpu_mask(i, group->cpumask) {
2043                         if (!cpu_isset(i, *cpus))
2044                                 continue;
2045
2046                         if (*sd_idle && !idle_cpu(i))
2047                                 *sd_idle = 0;
2048
2049                         /* Bias balancing toward cpus of our domain */
2050                         if (local_group)
2051                                 load = target_load(i, load_idx);
2052                         else
2053                                 load = source_load(i, load_idx);
2054
2055                         avg_load += load;
2056                 }
2057
2058                 total_load += avg_load;
2059                 total_pwr += group->cpu_power;
2060
2061                 /* Adjust by relative CPU power of the group */
2062                 avg_load = (avg_load * SCHED_LOAD_SCALE) / group->cpu_power;
2063
2064                 if (local_group) {
2065                         this_load = avg_load;
2066                         this = group;
2067                 } else if (avg_load > max_load) {
2068                         max_load = avg_load;
2069                         busiest = group;
2070                 }
2071                 group = group->next;
2072         } while (group != sd->groups);
2073
2074         if (!busiest || this_load >= max_load || max_load <= SCHED_LOAD_SCALE)
2075                 goto out_balanced;
2076
2077         avg_load = (SCHED_LOAD_SCALE * total_load) / total_pwr;
2078
2079         if (this_load >= avg_load ||
2080                         100*max_load <= sd->imbalance_pct*this_load)
2081                 goto out_balanced;
2082
2083         /*
2084          * We're trying to get all the cpus to the average_load, so we don't
2085          * want to push ourselves above the average load, nor do we wish to
2086          * reduce the max loaded cpu below the average load, as either of these
2087          * actions would just result in more rebalancing later, and ping-pong
2088          * tasks around. Thus we look for the minimum possible imbalance.
2089          * Negative imbalances (*we* are more loaded than anyone else) will
2090          * be counted as no imbalance for these purposes -- we can't fix that
2091          * by pulling tasks to us.  Be careful of negative numbers as they'll
2092          * appear as very large values with unsigned longs.
2093          */
2094
2095         /* Don't want to pull so many tasks that a group would go idle */
2096         max_pull = min(max_load - avg_load, max_load - SCHED_LOAD_SCALE);
2097
2098         /* How much load to actually move to equalise the imbalance */
2099         *imbalance = min(max_pull * busiest->cpu_power,
2100                                 (avg_load - this_load) * this->cpu_power)
2101                         / SCHED_LOAD_SCALE;
2102
2103         if (*imbalance < SCHED_LOAD_SCALE) {
2104                 unsigned long pwr_now = 0, pwr_move = 0;
2105                 unsigned long tmp;
2106
2107                 if (max_load - this_load >= SCHED_LOAD_SCALE*2) {
2108                         *imbalance = 1;
2109                         return busiest;
2110                 }
2111
2112                 /*
2113                  * OK, we don't have enough imbalance to justify moving tasks,
2114                  * however we may be able to increase total CPU power used by
2115                  * moving them.
2116                  */
2117
2118                 pwr_now += busiest->cpu_power*min(SCHED_LOAD_SCALE, max_load);
2119                 pwr_now += this->cpu_power*min(SCHED_LOAD_SCALE, this_load);
2120                 pwr_now /= SCHED_LOAD_SCALE;
2121
2122                 /* Amount of load we'd subtract */
2123                 tmp = SCHED_LOAD_SCALE*SCHED_LOAD_SCALE/busiest->cpu_power;
2124                 if (max_load > tmp)
2125                         pwr_move += busiest->cpu_power*min(SCHED_LOAD_SCALE,
2126                                                         max_load - tmp);
2127
2128                 /* Amount of load we'd add */
2129                 if (max_load*busiest->cpu_power <
2130                                 SCHED_LOAD_SCALE*SCHED_LOAD_SCALE)
2131                         tmp = max_load*busiest->cpu_power/this->cpu_power;
2132                 else
2133                         tmp = SCHED_LOAD_SCALE*SCHED_LOAD_SCALE/this->cpu_power;
2134                 pwr_move += this->cpu_power*min(SCHED_LOAD_SCALE, this_load + tmp);
2135                 pwr_move /= SCHED_LOAD_SCALE;
2136
2137                 /* Move if we gain throughput */
2138                 if (pwr_move <= pwr_now)
2139                         goto out_balanced;
2140
2141                 *imbalance = 1;
2142                 return busiest;
2143         }
2144
2145         /* Get rid of the scaling factor, rounding down as we divide */
2146         *imbalance = *imbalance / SCHED_LOAD_SCALE;
2147         return busiest;
2148
2149 out_balanced:
2150
2151         *imbalance = 0;
2152         return NULL;
2153 }
2154
2155 /*
2156  * find_busiest_queue - find the busiest runqueue among the cpus in group.
2157  */
2158 static runqueue_t *find_busiest_queue(struct sched_group *group,
2159         enum idle_type idle, cpumask_t *cpus)
2160 {
2161         unsigned long load, max_load = 0;
2162         runqueue_t *busiest = NULL;
2163         int i;
2164
2165         for_each_cpu_mask(i, group->cpumask) {
2166                 if (!cpu_isset(i, *cpus))
2167                         continue;
2168
2169                 load = source_load(i, 0);
2170
2171                 if (load > max_load) {
2172                         max_load = load;
2173                         busiest = cpu_rq(i);
2174                 }
2175         }
2176
2177         return busiest;
2178 }
2179
2180 /*
2181  * Max backoff if we encounter pinned tasks. Pretty arbitrary value, but
2182  * so long as it is large enough.
2183  */
2184 #define MAX_PINNED_INTERVAL     512
2185
2186 /*
2187  * Check this_cpu to ensure it is balanced within domain. Attempt to move
2188  * tasks if there is an imbalance.
2189  *
2190  * Called with this_rq unlocked.
2191  */
2192 static int load_balance(int this_cpu, runqueue_t *this_rq,
2193                         struct sched_domain *sd, enum idle_type idle)
2194 {
2195         struct sched_group *group;
2196         runqueue_t *busiest;
2197         unsigned long imbalance;
2198         int nr_moved, all_pinned = 0;
2199         int active_balance = 0;
2200         int sd_idle = 0;
2201         cpumask_t cpus = CPU_MASK_ALL;
2202
2203         if (idle != NOT_IDLE && sd->flags & SD_SHARE_CPUPOWER)
2204                 sd_idle = 1;
2205
2206         schedstat_inc(sd, lb_cnt[idle]);
2207
2208 redo:
2209         group = find_busiest_group(sd, this_cpu, &imbalance, idle,
2210                         &sd_idle, &cpus);
2211         if (!group) {
2212                 schedstat_inc(sd, lb_nobusyg[idle]);
2213                 goto out_balanced;
2214         }
2215
2216         busiest = find_busiest_queue(group, idle, &cpus);
2217         if (!busiest) {
2218                 schedstat_inc(sd, lb_nobusyq[idle]);
2219                 goto out_balanced;
2220         }
2221
2222         BUG_ON(busiest == this_rq);
2223
2224         schedstat_add(sd, lb_imbalance[idle], imbalance);
2225
2226         nr_moved = 0;
2227         if (busiest->nr_running > 1) {
2228                 /*
2229                  * Attempt to move tasks. If find_busiest_group has found
2230                  * an imbalance but busiest->nr_running <= 1, the group is
2231                  * still unbalanced. nr_moved simply stays zero, so it is
2232                  * correctly treated as an imbalance.
2233                  */
2234                 double_rq_lock(this_rq, busiest);
2235                 nr_moved = move_tasks(this_rq, this_cpu, busiest,
2236                                         imbalance, sd, idle, &all_pinned);
2237                 double_rq_unlock(this_rq, busiest);
2238
2239                 /* All tasks on this runqueue were pinned by CPU affinity */
2240                 if (unlikely(all_pinned)) {
2241                         cpu_clear(busiest->cpu, cpus);
2242                         if (!cpus_empty(cpus))
2243                                 goto redo;
2244                         goto out_balanced;
2245                 }
2246         }
2247
2248         if (!nr_moved) {
2249                 schedstat_inc(sd, lb_failed[idle]);
2250                 sd->nr_balance_failed++;
2251
2252                 if (unlikely(sd->nr_balance_failed > sd->cache_nice_tries+2)) {
2253
2254                         spin_lock(&busiest->lock);
2255
2256                         /* don't kick the migration_thread, if the curr
2257                          * task on busiest cpu can't be moved to this_cpu
2258                          */
2259                         if (!cpu_isset(this_cpu, busiest->curr->cpus_allowed)) {
2260                                 spin_unlock(&busiest->lock);
2261                                 all_pinned = 1;
2262                                 goto out_one_pinned;
2263                         }
2264
2265                         if (!busiest->active_balance) {
2266                                 busiest->active_balance = 1;
2267                                 busiest->push_cpu = this_cpu;
2268                                 active_balance = 1;
2269                         }
2270                         spin_unlock(&busiest->lock);
2271                         if (active_balance)
2272                                 wake_up_process(busiest->migration_thread);
2273
2274                         /*
2275                          * We've kicked active balancing, reset the failure
2276                          * counter.
2277                          */
2278                         sd->nr_balance_failed = sd->cache_nice_tries+1;
2279                 }
2280         } else
2281                 sd->nr_balance_failed = 0;
2282
2283         if (likely(!active_balance)) {
2284                 /* We were unbalanced, so reset the balancing interval */
2285                 sd->balance_interval = sd->min_interval;
2286         } else {
2287                 /*
2288                  * If we've begun active balancing, start to back off. This
2289                  * case may not be covered by the all_pinned logic if there
2290                  * is only 1 task on the busy runqueue (because we don't call
2291                  * move_tasks).
2292                  */
2293                 if (sd->balance_interval < sd->max_interval)
2294                         sd->balance_interval *= 2;
2295         }
2296
2297         if (!nr_moved && !sd_idle && sd->flags & SD_SHARE_CPUPOWER)
2298                 return -1;
2299         return nr_moved;
2300
2301 out_balanced:
2302         schedstat_inc(sd, lb_balanced[idle]);
2303
2304         sd->nr_balance_failed = 0;
2305
2306 out_one_pinned:
2307         /* tune up the balancing interval */
2308         if ((all_pinned && sd->balance_interval < MAX_PINNED_INTERVAL) ||
2309                         (sd->balance_interval < sd->max_interval))
2310                 sd->balance_interval *= 2;
2311
2312         if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER)
2313                 return -1;
2314         return 0;
2315 }
2316
2317 /*
2318  * Check this_cpu to ensure it is balanced within domain. Attempt to move
2319  * tasks if there is an imbalance.
2320  *
2321  * Called from schedule when this_rq is about to become idle (NEWLY_IDLE).
2322  * this_rq is locked.
2323  */
2324 static int load_balance_newidle(int this_cpu, runqueue_t *this_rq,
2325                                 struct sched_domain *sd)
2326 {
2327         struct sched_group *group;
2328         runqueue_t *busiest = NULL;
2329         unsigned long imbalance;
2330         int nr_moved = 0;
2331         int sd_idle = 0;
2332         cpumask_t cpus = CPU_MASK_ALL;
2333
2334         if (sd->flags & SD_SHARE_CPUPOWER)
2335                 sd_idle = 1;
2336
2337         schedstat_inc(sd, lb_cnt[NEWLY_IDLE]);
2338 redo:
2339         group = find_busiest_group(sd, this_cpu, &imbalance, NEWLY_IDLE,
2340                         &sd_idle, &cpus);
2341         if (!group) {
2342                 schedstat_inc(sd, lb_nobusyg[NEWLY_IDLE]);
2343                 goto out_balanced;
2344         }
2345
2346         busiest = find_busiest_queue(group, NEWLY_IDLE, &cpus);
2347         if (!busiest) {
2348                 schedstat_inc(sd, lb_nobusyq[NEWLY_IDLE]);
2349                 goto out_balanced;
2350         }
2351
2352         BUG_ON(busiest == this_rq);
2353
2354         schedstat_add(sd, lb_imbalance[NEWLY_IDLE], imbalance);
2355
2356         nr_moved = 0;
2357         if (busiest->nr_running > 1) {
2358                 /* Attempt to move tasks */
2359                 double_lock_balance(this_rq, busiest);
2360                 nr_moved = move_tasks(this_rq, this_cpu, busiest,
2361                                         imbalance, sd, NEWLY_IDLE, NULL);
2362                 spin_unlock(&busiest->lock);
2363
2364                 if (!nr_moved) {
2365                         cpu_clear(busiest->cpu, cpus);
2366                         if (!cpus_empty(cpus))
2367                                 goto redo;
2368                 }
2369         }
2370
2371         if (!nr_moved) {
2372                 schedstat_inc(sd, lb_failed[NEWLY_IDLE]);
2373                 if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER)
2374                         return -1;
2375         } else
2376                 sd->nr_balance_failed = 0;
2377
2378         return nr_moved;
2379
2380 out_balanced:
2381         schedstat_inc(sd, lb_balanced[NEWLY_IDLE]);
2382         if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER)
2383                 return -1;
2384         sd->nr_balance_failed = 0;
2385         return 0;
2386 }
2387
2388 /*
2389  * idle_balance is called by schedule() if this_cpu is about to become
2390  * idle. Attempts to pull tasks from other CPUs.
2391  */
2392 static void idle_balance(int this_cpu, runqueue_t *this_rq)
2393 {
2394         struct sched_domain *sd;
2395
2396         for_each_domain(this_cpu, sd) {
2397                 if (sd->flags & SD_BALANCE_NEWIDLE) {
2398                         if (load_balance_newidle(this_cpu, this_rq, sd)) {
2399                                 /* We've pulled tasks over so stop searching */
2400                                 break;
2401                         }
2402                 }
2403         }
2404 }
2405
2406 /*
2407  * active_load_balance is run by migration threads. It pushes running tasks
2408  * off the busiest CPU onto idle CPUs. It requires at least 1 task to be
2409  * running on each physical CPU where possible, and avoids physical /
2410  * logical imbalances.
2411  *
2412  * Called with busiest_rq locked.
2413  */
2414 static void active_load_balance(runqueue_t *busiest_rq, int busiest_cpu)
2415 {
2416         struct sched_domain *sd;
2417         runqueue_t *target_rq;
2418         int target_cpu = busiest_rq->push_cpu;
2419
2420         if (busiest_rq->nr_running <= 1)
2421                 /* no task to move */
2422                 return;
2423
2424         target_rq = cpu_rq(target_cpu);
2425
2426         /*
2427          * This condition is "impossible", if it occurs
2428          * we need to fix it.  Originally reported by
2429          * Bjorn Helgaas on a 128-cpu setup.
2430          */
2431         BUG_ON(busiest_rq == target_rq);
2432
2433         /* move a task from busiest_rq to target_rq */
2434         double_lock_balance(busiest_rq, target_rq);
2435
2436         /* Search for an sd spanning us and the target CPU. */
2437         for_each_domain(target_cpu, sd)
2438                 if ((sd->flags & SD_LOAD_BALANCE) &&
2439                         cpu_isset(busiest_cpu, sd->span))
2440                                 break;
2441
2442         if (unlikely(sd == NULL))
2443                 goto out;
2444
2445         schedstat_inc(sd, alb_cnt);
2446
2447         if (move_tasks(target_rq, target_cpu, busiest_rq, 1, sd, SCHED_IDLE, NULL))
2448                 schedstat_inc(sd, alb_pushed);
2449         else
2450                 schedstat_inc(sd, alb_failed);
2451 out:
2452         spin_unlock(&target_rq->lock);
2453 }
2454
2455 /*
2456  * rebalance_tick will get called every timer tick, on every CPU.
2457  *
2458  * It checks each scheduling domain to see if it is due to be balanced,
2459  * and initiates a balancing operation if so.
2460  *
2461  * Balancing parameters are set up in arch_init_sched_domains.
2462  */
2463
2464 /* Don't have all balancing operations going off at once */
2465 #define CPU_OFFSET(cpu) (HZ * cpu / NR_CPUS)
2466
2467 static void rebalance_tick(int this_cpu, runqueue_t *this_rq,
2468                            enum idle_type idle)
2469 {
2470         unsigned long old_load, this_load;
2471         unsigned long j = jiffies + CPU_OFFSET(this_cpu);
2472         struct sched_domain *sd;
2473         int i;
2474
2475         this_load = this_rq->nr_running * SCHED_LOAD_SCALE;
2476         /* Update our load */
2477         for (i = 0; i < 3; i++) {
2478                 unsigned long new_load = this_load;
2479                 int scale = 1 << i;
2480                 old_load = this_rq->cpu_load[i];
2481                 /*
2482                  * Round up the averaging division if load is increasing. This
2483                  * prevents us from getting stuck on 9 if the load is 10, for
2484                  * example.
2485                  */
2486                 if (new_load > old_load)
2487                         new_load += scale-1;
2488                 this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) / scale;
2489         }
2490
2491         for_each_domain(this_cpu, sd) {
2492                 unsigned long interval;
2493
2494                 if (!(sd->flags & SD_LOAD_BALANCE))
2495                         continue;
2496
2497                 interval = sd->balance_interval;
2498                 if (idle != SCHED_IDLE)
2499                         interval *= sd->busy_factor;
2500
2501                 /* scale ms to jiffies */
2502                 interval = msecs_to_jiffies(interval);
2503                 if (unlikely(!interval))
2504                         interval = 1;
2505
2506                 if (j - sd->last_balance >= interval) {
2507                         if (load_balance(this_cpu, this_rq, sd, idle)) {
2508                                 /*
2509                                  * We've pulled tasks over so either we're no
2510                                  * longer idle, or one of our SMT siblings is
2511                                  * not idle.
2512                                  */
2513                                 idle = NOT_IDLE;
2514                         }
2515                         sd->last_balance += interval;
2516                 }
2517         }
2518 }
2519 #else
2520 /*
2521  * on UP we do not need to balance between CPUs:
2522  */
2523 static inline void rebalance_tick(int cpu, runqueue_t *rq, enum idle_type idle)
2524 {
2525 }
2526 static inline void idle_balance(int cpu, runqueue_t *rq)
2527 {
2528 }
2529 #endif
2530
2531 static inline int wake_priority_sleeper(runqueue_t *rq)
2532 {
2533         int ret = 0;
2534 #ifdef CONFIG_SCHED_SMT
2535         spin_lock(&rq->lock);
2536         /*
2537          * If an SMT sibling task has been put to sleep for priority
2538          * reasons reschedule the idle task to see if it can now run.
2539          */
2540         if (rq->nr_running) {
2541                 resched_task(rq->idle);
2542                 ret = 1;
2543         }
2544         spin_unlock(&rq->lock);
2545 #endif
2546         return ret;
2547 }
2548
2549 DEFINE_PER_CPU(struct kernel_stat, kstat);
2550
2551 EXPORT_PER_CPU_SYMBOL(kstat);
2552
2553 /*
2554  * This is called on clock ticks and on context switches.
2555  * Bank in p->sched_time the ns elapsed since the last tick or switch.
2556  */
2557 static inline void update_cpu_clock(task_t *p, runqueue_t *rq,
2558                                     unsigned long long now)
2559 {
2560         unsigned long long last = max(p->timestamp, rq->timestamp_last_tick);
2561         p->sched_time += now - last;
2562 }
2563
2564 /*
2565  * Return current->sched_time plus any more ns on the sched_clock
2566  * that have not yet been banked.
2567  */
2568 unsigned long long current_sched_time(const task_t *tsk)
2569 {
2570         unsigned long long ns;
2571         unsigned long flags;
2572         local_irq_save(flags);
2573         ns = max(tsk->timestamp, task_rq(tsk)->timestamp_last_tick);
2574         ns = tsk->sched_time + (sched_clock() - ns);
2575         local_irq_restore(flags);
2576         return ns;
2577 }
2578
2579 /*
2580  * We place interactive tasks back into the active array, if possible.
2581  *
2582  * To guarantee that this does not starve expired tasks we ignore the
2583  * interactivity of a task if the first expired task had to wait more
2584  * than a 'reasonable' amount of time. This deadline timeout is
2585  * load-dependent, as the frequency of array switched decreases with
2586  * increasing number of running tasks. We also ignore the interactivity
2587  * if a better static_prio task has expired:
2588  */
2589 #define EXPIRED_STARVING(rq) \
2590         ((STARVATION_LIMIT && ((rq)->expired_timestamp && \
2591                 (jiffies - (rq)->expired_timestamp >= \
2592                         STARVATION_LIMIT * ((rq)->nr_running) + 1))) || \
2593                         ((rq)->curr->static_prio > (rq)->best_expired_prio))
2594
2595 /*
2596  * Account user cpu time to a process.
2597  * @p: the process that the cpu time gets accounted to
2598  * @hardirq_offset: the offset to subtract from hardirq_count()
2599  * @cputime: the cpu time spent in user space since the last update
2600  */
2601 void account_user_time(struct task_struct *p, cputime_t cputime)
2602 {
2603         struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2604         struct vx_info *vxi = p->vx_info;  /* p is _always_ current */
2605         cputime64_t tmp;
2606         int nice = (TASK_NICE(p) > 0);
2607
2608         p->utime = cputime_add(p->utime, cputime);
2609         vx_account_user(vxi, cputime, nice);
2610
2611         /* Add user time to cpustat. */
2612         tmp = cputime_to_cputime64(cputime);
2613         if (nice)
2614                 cpustat->nice = cputime64_add(cpustat->nice, tmp);
2615         else
2616                 cpustat->user = cputime64_add(cpustat->user, tmp);
2617 }
2618
2619 /*
2620  * Account system cpu time to a process.
2621  * @p: the process that the cpu time gets accounted to
2622  * @hardirq_offset: the offset to subtract from hardirq_count()
2623  * @cputime: the cpu time spent in kernel space since the last update
2624  */
2625 void account_system_time(struct task_struct *p, int hardirq_offset,
2626                          cputime_t cputime)
2627 {
2628         struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2629         struct vx_info *vxi = p->vx_info;  /* p is _always_ current */
2630         runqueue_t *rq = this_rq();
2631         cputime64_t tmp;
2632
2633         p->stime = cputime_add(p->stime, cputime);
2634         vx_account_system(vxi, cputime, (p == rq->idle));
2635
2636         /* Add system time to cpustat. */
2637         tmp = cputime_to_cputime64(cputime);
2638         if (hardirq_count() - hardirq_offset)
2639                 cpustat->irq = cputime64_add(cpustat->irq, tmp);
2640         else if (softirq_count())
2641                 cpustat->softirq = cputime64_add(cpustat->softirq, tmp);
2642         else if (p != rq->idle)
2643                 cpustat->system = cputime64_add(cpustat->system, tmp);
2644         else if (atomic_read(&rq->nr_iowait) > 0)
2645                 cpustat->iowait = cputime64_add(cpustat->iowait, tmp);
2646         else
2647                 cpustat->idle = cputime64_add(cpustat->idle, tmp);
2648         /* Account for system time used */
2649         acct_update_integrals(p);
2650 }
2651
2652 /*
2653  * Account for involuntary wait time.
2654  * @p: the process from which the cpu time has been stolen
2655  * @steal: the cpu time spent in involuntary wait
2656  */
2657 void account_steal_time(struct task_struct *p, cputime_t steal)
2658 {
2659         struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2660         cputime64_t tmp = cputime_to_cputime64(steal);
2661         runqueue_t *rq = this_rq();
2662
2663         if (p == rq->idle) {
2664                 p->stime = cputime_add(p->stime, steal);
2665                 if (atomic_read(&rq->nr_iowait) > 0)
2666                         cpustat->iowait = cputime64_add(cpustat->iowait, tmp);
2667                 else
2668                         cpustat->idle = cputime64_add(cpustat->idle, tmp);
2669         } else
2670                 cpustat->steal = cputime64_add(cpustat->steal, tmp);
2671 }
2672
2673 /*
2674  * This function gets called by the timer code, with HZ frequency.
2675  * We call it with interrupts disabled.
2676  *
2677  * It also gets called by the fork code, when changing the parent's
2678  * timeslices.
2679  */
2680 void scheduler_tick(void)
2681 {
2682         int cpu = smp_processor_id();
2683         runqueue_t *rq = this_rq();
2684         task_t *p = current;
2685         unsigned long long now = sched_clock();
2686
2687         update_cpu_clock(p, rq, now);
2688
2689         rq->timestamp_last_tick = now;
2690
2691 #if defined(CONFIG_VSERVER_HARDCPU) && defined(CONFIG_VSERVER_ACB_SCHED) 
2692         vx_scheduler_tick();
2693 #endif
2694
2695         if (p == rq->idle) {
2696                 if (wake_priority_sleeper(rq))
2697                         goto out;
2698 #ifdef CONFIG_VSERVER_HARDCPU_IDLE
2699                 if (!--rq->idle_tokens && !list_empty(&rq->hold_queue))
2700                         set_need_resched();
2701 #endif
2702                 rebalance_tick(cpu, rq, SCHED_IDLE);
2703                 return;
2704         }
2705
2706         /* Task might have expired already, but not scheduled off yet */
2707         if (p->array != rq->active) {
2708                 set_tsk_need_resched(p);
2709                 goto out;
2710         }
2711         spin_lock(&rq->lock);
2712         /*
2713          * The task was running during this tick - update the
2714          * time slice counter. Note: we do not update a thread's
2715          * priority until it either goes to sleep or uses up its
2716          * timeslice. This makes it possible for interactive tasks
2717          * to use up their timeslices at their highest priority levels.
2718          */
2719         if (rt_task(p)) {
2720                 /*
2721                  * RR tasks need a special form of timeslice management.
2722                  * FIFO tasks have no timeslices.
2723                  */
2724                 if ((p->policy == SCHED_RR) && vx_need_resched(p)) {
2725                         p->time_slice = task_timeslice(p);
2726                         p->first_time_slice = 0;
2727                         set_tsk_need_resched(p);
2728
2729                         /* put it at the end of the queue: */
2730                         requeue_task(p, rq->active);
2731                 }
2732                 goto out_unlock;
2733         }
2734         if (vx_need_resched(p)) {
2735                 dequeue_task(p, rq->active);
2736                 set_tsk_need_resched(p);
2737                 p->prio = effective_prio(p);
2738                 p->time_slice = task_timeslice(p);
2739                 p->first_time_slice = 0;
2740
2741                 if (!rq->expired_timestamp)
2742                         rq->expired_timestamp = jiffies;
2743                 if (!TASK_INTERACTIVE(p) || EXPIRED_STARVING(rq)) {
2744                         enqueue_task(p, rq->expired);
2745                         if (p->static_prio < rq->best_expired_prio)
2746                                 rq->best_expired_prio = p->static_prio;
2747                 } else
2748                         enqueue_task(p, rq->active);
2749         } else {
2750                 /*
2751                  * Prevent a too long timeslice allowing a task to monopolize
2752                  * the CPU. We do this by splitting up the timeslice into
2753                  * smaller pieces.
2754                  *
2755                  * Note: this does not mean the task's timeslices expire or
2756                  * get lost in any way, they just might be preempted by
2757                  * another task of equal priority. (one with higher
2758                  * priority would have preempted this task already.) We
2759                  * requeue this task to the end of the list on this priority
2760                  * level, which is in essence a round-robin of tasks with
2761                  * equal priority.
2762                  *
2763                  * This only applies to tasks in the interactive
2764                  * delta range with at least TIMESLICE_GRANULARITY to requeue.
2765                  */
2766                 if (TASK_INTERACTIVE(p) && !((task_timeslice(p) -
2767                         p->time_slice) % TIMESLICE_GRANULARITY(p)) &&
2768                         (p->time_slice >= TIMESLICE_GRANULARITY(p)) &&
2769                         (p->array == rq->active)) {
2770
2771                         requeue_task(p, rq->active);
2772                         set_tsk_need_resched(p);
2773                 }
2774         }
2775 out_unlock:
2776         spin_unlock(&rq->lock);
2777 out:
2778         rebalance_tick(cpu, rq, NOT_IDLE);
2779 }
2780
2781 #ifdef CONFIG_SCHED_SMT
2782 static inline void wakeup_busy_runqueue(runqueue_t *rq)
2783 {
2784         /* If an SMT runqueue is sleeping due to priority reasons wake it up */
2785         if (rq->curr == rq->idle && rq->nr_running)
2786                 resched_task(rq->idle);
2787 }
2788
2789 static void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2790 {
2791         struct sched_domain *tmp, *sd = NULL;
2792         cpumask_t sibling_map;
2793         int i;
2794
2795         for_each_domain(this_cpu, tmp)
2796                 if (tmp->flags & SD_SHARE_CPUPOWER)
2797                         sd = tmp;
2798
2799         if (!sd)
2800                 return;
2801
2802         /*
2803          * Unlock the current runqueue because we have to lock in
2804          * CPU order to avoid deadlocks. Caller knows that we might
2805          * unlock. We keep IRQs disabled.
2806          */
2807         spin_unlock(&this_rq->lock);
2808
2809         sibling_map = sd->span;
2810
2811         for_each_cpu_mask(i, sibling_map)
2812                 spin_lock(&cpu_rq(i)->lock);
2813         /*
2814          * We clear this CPU from the mask. This both simplifies the
2815          * inner loop and keps this_rq locked when we exit:
2816          */
2817         cpu_clear(this_cpu, sibling_map);
2818
2819         for_each_cpu_mask(i, sibling_map) {
2820                 runqueue_t *smt_rq = cpu_rq(i);
2821
2822                 wakeup_busy_runqueue(smt_rq);
2823         }
2824
2825         for_each_cpu_mask(i, sibling_map)
2826                 spin_unlock(&cpu_rq(i)->lock);
2827         /*
2828          * We exit with this_cpu's rq still held and IRQs
2829          * still disabled:
2830          */
2831 }
2832
2833 /*
2834  * number of 'lost' timeslices this task wont be able to fully
2835  * utilize, if another task runs on a sibling. This models the
2836  * slowdown effect of other tasks running on siblings:
2837  */
2838 static inline unsigned long smt_slice(task_t *p, struct sched_domain *sd)
2839 {
2840         return p->time_slice * (100 - sd->per_cpu_gain) / 100;
2841 }
2842
2843 static int dependent_sleeper(int this_cpu, runqueue_t *this_rq)
2844 {
2845         struct sched_domain *tmp, *sd = NULL;
2846         cpumask_t sibling_map;
2847         prio_array_t *array;
2848         int ret = 0, i;
2849         task_t *p;
2850
2851         for_each_domain(this_cpu, tmp)
2852                 if (tmp->flags & SD_SHARE_CPUPOWER)
2853                         sd = tmp;
2854
2855         if (!sd)
2856                 return 0;
2857
2858         /*
2859          * The same locking rules and details apply as for
2860          * wake_sleeping_dependent():
2861          */
2862         spin_unlock(&this_rq->lock);
2863         sibling_map = sd->span;
2864         for_each_cpu_mask(i, sibling_map)
2865                 spin_lock(&cpu_rq(i)->lock);
2866         cpu_clear(this_cpu, sibling_map);
2867
2868         /*
2869          * Establish next task to be run - it might have gone away because
2870          * we released the runqueue lock above:
2871          */
2872         if (!this_rq->nr_running)
2873                 goto out_unlock;
2874         array = this_rq->active;
2875         if (!array->nr_active)
2876                 array = this_rq->expired;
2877         BUG_ON(!array->nr_active);
2878
2879         p = list_entry(array->queue[sched_find_first_bit(array->bitmap)].next,
2880                 task_t, run_list);
2881
2882         for_each_cpu_mask(i, sibling_map) {
2883                 runqueue_t *smt_rq = cpu_rq(i);
2884                 task_t *smt_curr = smt_rq->curr;
2885
2886                 /* Kernel threads do not participate in dependent sleeping */
2887                 if (!p->mm || !smt_curr->mm || rt_task(p))
2888                         goto check_smt_task;
2889
2890                 /*
2891                  * If a user task with lower static priority than the
2892                  * running task on the SMT sibling is trying to schedule,
2893                  * delay it till there is proportionately less timeslice
2894                  * left of the sibling task to prevent a lower priority
2895                  * task from using an unfair proportion of the
2896                  * physical cpu's resources. -ck
2897                  */
2898                 if (rt_task(smt_curr)) {
2899                         /*
2900                          * With real time tasks we run non-rt tasks only
2901                          * per_cpu_gain% of the time.
2902                          */
2903                         if ((jiffies % DEF_TIMESLICE) >
2904                                 (sd->per_cpu_gain * DEF_TIMESLICE / 100))
2905                                         ret = 1;
2906                 } else
2907                         if (smt_curr->static_prio < p->static_prio &&
2908                                 !TASK_PREEMPTS_CURR(p, smt_rq) &&
2909                                 smt_slice(smt_curr, sd) > task_timeslice(p))
2910                                         ret = 1;
2911
2912 check_smt_task:
2913                 if ((!smt_curr->mm && smt_curr != smt_rq->idle) ||
2914                         rt_task(smt_curr))
2915                                 continue;
2916                 if (!p->mm) {
2917                         wakeup_busy_runqueue(smt_rq);
2918                         continue;
2919                 }
2920
2921                 /*
2922                  * Reschedule a lower priority task on the SMT sibling for
2923                  * it to be put to sleep, or wake it up if it has been put to
2924                  * sleep for priority reasons to see if it should run now.
2925                  */
2926                 if (rt_task(p)) {
2927                         if ((jiffies % DEF_TIMESLICE) >
2928                                 (sd->per_cpu_gain * DEF_TIMESLICE / 100))
2929                                         resched_task(smt_curr);
2930                 } else {
2931                         if (TASK_PREEMPTS_CURR(p, smt_rq) &&
2932                                 smt_slice(p, sd) > task_timeslice(smt_curr))
2933                                         resched_task(smt_curr);
2934                         else
2935                                 wakeup_busy_runqueue(smt_rq);
2936                 }
2937         }
2938 out_unlock:
2939         for_each_cpu_mask(i, sibling_map)
2940                 spin_unlock(&cpu_rq(i)->lock);
2941         return ret;
2942 }
2943 #else
2944 static inline void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2945 {
2946 }
2947
2948 static inline int dependent_sleeper(int this_cpu, runqueue_t *this_rq)
2949 {
2950         return 0;
2951 }
2952 #endif
2953
2954 #if defined(CONFIG_PREEMPT) && defined(CONFIG_DEBUG_PREEMPT)
2955
2956 void fastcall add_preempt_count(int val)
2957 {
2958         /*
2959          * Underflow?
2960          */
2961         BUG_ON((preempt_count() < 0));
2962         preempt_count() += val;
2963         /*
2964          * Spinlock count overflowing soon?
2965          */
2966         BUG_ON((preempt_count() & PREEMPT_MASK) >= PREEMPT_MASK-10);
2967 }
2968 EXPORT_SYMBOL(add_preempt_count);
2969
2970 void fastcall sub_preempt_count(int val)
2971 {
2972         /*
2973          * Underflow?
2974          */
2975         BUG_ON(val > preempt_count());
2976         /*
2977          * Is the spinlock portion underflowing?
2978          */
2979         BUG_ON((val < PREEMPT_MASK) && !(preempt_count() & PREEMPT_MASK));
2980         preempt_count() -= val;
2981 }
2982 EXPORT_SYMBOL(sub_preempt_count);
2983
2984 #endif
2985
2986 /*
2987  * schedule() is the main scheduler function.
2988  */
2989 asmlinkage void __sched schedule(void)
2990 {
2991         long *switch_count;
2992         task_t *prev, *next;
2993         runqueue_t *rq;
2994         prio_array_t *array;
2995         struct list_head *queue;
2996         unsigned long long now;
2997         unsigned long run_time;
2998         int cpu, idx, new_prio;
2999         struct vx_info *vxi;
3000 #ifdef  CONFIG_VSERVER_HARDCPU
3001         int maxidle = -HZ;
3002 # ifdef CONFIG_VSERVER_ACB_SCHED
3003         int min_guarantee_ticks = VX_INVALID_TICKS;
3004         int min_best_effort_ticks = VX_INVALID_TICKS;
3005 # endif
3006 #endif
3007
3008         /*
3009          * Test if we are atomic.  Since do_exit() needs to call into
3010          * schedule() atomically, we ignore that path for now.
3011          * Otherwise, whine if we are scheduling when we should not be.
3012          */
3013         if (likely(!current->exit_state)) {
3014                 if (unlikely(in_atomic())) {
3015                         printk(KERN_ERR "scheduling while atomic: "
3016                                 "%s/0x%08x/%d\n",
3017                                 current->comm, preempt_count(), current->pid);
3018                         dump_stack();
3019                 }
3020         }
3021         profile_hit(SCHED_PROFILING, __builtin_return_address(0));
3022
3023 need_resched:
3024         preempt_disable();
3025         prev = current;
3026         release_kernel_lock(prev);
3027 need_resched_nonpreemptible:
3028         rq = this_rq();
3029
3030         /*
3031          * The idle thread is not allowed to schedule!
3032          * Remove this check after it has been exercised a bit.
3033          */
3034         if (unlikely(prev == rq->idle) && prev->state != TASK_RUNNING) {
3035                 printk(KERN_ERR "bad: scheduling from the idle thread!\n");
3036                 dump_stack();
3037         }
3038
3039         schedstat_inc(rq, sched_cnt);
3040         now = sched_clock();
3041         if (likely((long long)(now - prev->timestamp) < NS_MAX_SLEEP_AVG)) {
3042                 run_time = now - prev->timestamp;
3043                 if (unlikely((long long)(now - prev->timestamp) < 0))
3044                         run_time = 0;
3045         } else
3046                 run_time = NS_MAX_SLEEP_AVG;
3047
3048         /*
3049          * Tasks charged proportionately less run_time at high sleep_avg to
3050          * delay them losing their interactive status
3051          */
3052         run_time /= (CURRENT_BONUS(prev) ? : 1);
3053
3054         spin_lock_irq(&rq->lock);
3055
3056         if (unlikely(prev->flags & PF_DEAD))
3057                 prev->state = EXIT_DEAD;
3058
3059         switch_count = &prev->nivcsw;
3060         if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
3061                 switch_count = &prev->nvcsw;
3062                 if (unlikely((prev->state & TASK_INTERRUPTIBLE) &&
3063                                 unlikely(signal_pending(prev))))
3064                         prev->state = TASK_RUNNING;
3065                 else {
3066                         if (prev->state == TASK_UNINTERRUPTIBLE) {
3067                                 rq->nr_uninterruptible++;
3068                                 vx_uninterruptible_inc(prev);
3069                         }
3070                         deactivate_task(prev, rq);
3071                 }
3072         }
3073
3074 #ifdef CONFIG_VSERVER_HARDCPU
3075 # ifdef CONFIG_VSERVER_ACB_SCHED
3076 drain_hold_queue:
3077
3078         min_guarantee_ticks = VX_INVALID_TICKS;
3079         min_best_effort_ticks = VX_INVALID_TICKS;
3080
3081 # endif 
3082         if (!list_empty(&rq->hold_queue)) {
3083                 struct list_head *l, *n;
3084                 int ret;
3085
3086                 vxi = NULL;
3087                 list_for_each_safe(l, n, &rq->hold_queue) {
3088                         next = list_entry(l, task_t, run_list);
3089                         if (vxi == next->vx_info)
3090                                 continue;
3091
3092                         vxi = next->vx_info;
3093                         ret = vx_tokens_recalc(vxi);
3094
3095                         if (ret > 0) {
3096                                 vx_unhold_task(vxi, next, rq);
3097                                 break;
3098                         }
3099                         if ((ret < 0) && (maxidle < ret))
3100                                 maxidle = ret;
3101 # ifdef CONFIG_VSERVER_ACB_SCHED
3102                         if (ret < 0) {
3103                                 if (IS_BEST_EFFORT(vxi)) {
3104                                         if (min_best_effort_ticks < ret) 
3105                                                 min_best_effort_ticks = ret;
3106                                 } else {
3107                                         if (min_guarantee_ticks < ret)
3108                                                 min_guarantee_ticks = ret;
3109                                 }
3110                         }
3111 # endif
3112                 }
3113         }
3114         rq->idle_tokens = -maxidle;
3115
3116 pick_next:
3117 #endif
3118
3119         cpu = smp_processor_id();
3120         if (unlikely(!rq->nr_running)) {
3121 go_idle:
3122                 idle_balance(cpu, rq);
3123                 if (!rq->nr_running) {
3124                         next = rq->idle;
3125                         rq->expired_timestamp = 0;
3126                         wake_sleeping_dependent(cpu, rq);
3127                         /*
3128                          * wake_sleeping_dependent() might have released
3129                          * the runqueue, so break out if we got new
3130                          * tasks meanwhile:
3131                          */
3132                         if (!rq->nr_running)
3133                                 goto switch_tasks;
3134                 }
3135         } else {
3136                 if (dependent_sleeper(cpu, rq)) {
3137                         next = rq->idle;
3138                         goto switch_tasks;
3139                 }
3140                 /*
3141                  * dependent_sleeper() releases and reacquires the runqueue
3142                  * lock, hence go into the idle loop if the rq went
3143                  * empty meanwhile:
3144                  */
3145                 if (unlikely(!rq->nr_running))
3146                         goto go_idle;
3147         }
3148
3149         array = rq->active;
3150         if (unlikely(!array->nr_active)) {
3151                 /*
3152                  * Switch the active and expired arrays.
3153                  */
3154                 schedstat_inc(rq, sched_switch);
3155                 rq->active = rq->expired;
3156                 rq->expired = array;
3157                 array = rq->active;
3158                 rq->expired_timestamp = 0;
3159                 rq->best_expired_prio = MAX_PRIO;
3160         }
3161
3162         idx = sched_find_first_bit(array->bitmap);
3163         queue = array->queue + idx;
3164         next = list_entry(queue->next, task_t, run_list);
3165
3166         vxi = next->vx_info;
3167 #ifdef  CONFIG_VSERVER_HARDCPU
3168         if (vx_info_flags(vxi, VXF_SCHED_PAUSE|VXF_SCHED_HARD, 0)) {
3169                 int ret = vx_tokens_recalc(vxi);
3170
3171                 if (unlikely(ret <= 0)) {
3172                         if (ret) {
3173                                 if ((rq->idle_tokens > -ret))
3174                                         rq->idle_tokens = -ret;
3175 # ifdef CONFIG_VSERVER_ACB_SCHED
3176                                 if (IS_BEST_EFFORT(vxi)) {
3177                                         if (min_best_effort_ticks < ret) 
3178                                                 min_best_effort_ticks = ret;
3179                                 } else {
3180                                         if (min_guarantee_ticks < ret)
3181                                                 min_guarantee_ticks = ret;
3182                                 }
3183 # endif
3184                         }
3185                         vx_hold_task(vxi, next, rq);
3186                         goto pick_next;
3187                 }
3188         } else  /* well, looks ugly but not as ugly as the ifdef-ed version */
3189 #endif
3190         if (vx_info_flags(vxi, VXF_SCHED_PRIO, 0))
3191                 vx_tokens_recalc(vxi);
3192
3193         if (!rt_task(next) && next->activated > 0) {
3194                 unsigned long long delta = now - next->timestamp;
3195                 if (unlikely((long long)(now - next->timestamp) < 0))
3196                         delta = 0;
3197
3198                 if (next->activated == 1)
3199                         delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128;
3200
3201                 array = next->array;
3202                 new_prio = recalc_task_prio(next, next->timestamp + delta);
3203
3204                 if (unlikely(next->prio != new_prio)) {
3205                         dequeue_task(next, array);
3206                         next->prio = new_prio;
3207                         enqueue_task(next, array);
3208                 } else
3209                         requeue_task(next, array);
3210         }
3211         next->activated = 0;
3212 switch_tasks:
3213 #if defined(CONFIG_VSERVER_HARDCPU) && defined(CONFIG_VSERVER_ACB_SCHED)
3214         if (next == rq->idle && !list_empty(&rq->hold_queue)) {
3215                 if (min_best_effort_ticks != VX_INVALID_TICKS) {
3216                         vx_advance_best_effort_ticks(-min_best_effort_ticks);
3217                         goto drain_hold_queue;
3218                 } 
3219                 if (min_guarantee_ticks != VX_INVALID_TICKS) {
3220                         vx_advance_guaranteed_ticks(-min_guarantee_ticks);
3221                         goto drain_hold_queue;
3222                 }
3223         }
3224 #endif
3225         if (next == rq->idle)
3226                 schedstat_inc(rq, sched_goidle);
3227         prefetch(next);
3228         prefetch_stack(next);
3229         clear_tsk_need_resched(prev);
3230         rcu_qsctr_inc(task_cpu(prev));
3231
3232         update_cpu_clock(prev, rq, now);
3233
3234         prev->sleep_avg -= run_time;
3235         if ((long)prev->sleep_avg <= 0)
3236                 prev->sleep_avg = 0;
3237         prev->timestamp = prev->last_ran = now;
3238
3239         sched_info_switch(prev, next);
3240         if (likely(prev != next)) {
3241                 next->timestamp = now;
3242                 rq->nr_switches++;
3243                 rq->curr = next;
3244                 ++*switch_count;
3245
3246                 prepare_task_switch(rq, next);
3247                 prev = context_switch(rq, prev, next);
3248                 barrier();
3249                 /*
3250                  * this_rq must be evaluated again because prev may have moved
3251                  * CPUs since it called schedule(), thus the 'rq' on its stack
3252                  * frame will be invalid.
3253                  */
3254                 finish_task_switch(this_rq(), prev);
3255         } else
3256                 spin_unlock_irq(&rq->lock);
3257
3258         prev = current;
3259         if (unlikely(reacquire_kernel_lock(prev) < 0))
3260                 goto need_resched_nonpreemptible;
3261         preempt_enable_no_resched();
3262         if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
3263                 goto need_resched;
3264 }
3265
3266 EXPORT_SYMBOL(schedule);
3267
3268 #ifdef CONFIG_PREEMPT
3269 /*
3270  * this is is the entry point to schedule() from in-kernel preemption
3271  * off of preempt_enable.  Kernel preemptions off return from interrupt
3272  * occur there and call schedule directly.
3273  */
3274 asmlinkage void __sched preempt_schedule(void)
3275 {
3276         struct thread_info *ti = current_thread_info();
3277 #ifdef CONFIG_PREEMPT_BKL
3278         struct task_struct *task = current;
3279         int saved_lock_depth;
3280 #endif
3281         /*
3282          * If there is a non-zero preempt_count or interrupts are disabled,
3283          * we do not want to preempt the current task.  Just return..
3284          */
3285         if (unlikely(ti->preempt_count || irqs_disabled()))
3286                 return;
3287
3288 need_resched:
3289         add_preempt_count(PREEMPT_ACTIVE);
3290         /*
3291          * We keep the big kernel semaphore locked, but we
3292          * clear ->lock_depth so that schedule() doesnt
3293          * auto-release the semaphore:
3294          */
3295 #ifdef CONFIG_PREEMPT_BKL
3296         saved_lock_depth = task->lock_depth;
3297         task->lock_depth = -1;
3298 #endif
3299         schedule();
3300 #ifdef CONFIG_PREEMPT_BKL
3301         task->lock_depth = saved_lock_depth;
3302 #endif
3303         sub_preempt_count(PREEMPT_ACTIVE);
3304
3305         /* we could miss a preemption opportunity between schedule and now */
3306         barrier();
3307         if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
3308                 goto need_resched;
3309 }
3310
3311 EXPORT_SYMBOL(preempt_schedule);
3312
3313 /*
3314  * this is is the entry point to schedule() from kernel preemption
3315  * off of irq context.
3316  * Note, that this is called and return with irqs disabled. This will
3317  * protect us against recursive calling from irq.
3318  */
3319 asmlinkage void __sched preempt_schedule_irq(void)
3320 {
3321         struct thread_info *ti = current_thread_info();
3322 #ifdef CONFIG_PREEMPT_BKL
3323         struct task_struct *task = current;
3324         int saved_lock_depth;
3325 #endif
3326         /* Catch callers which need to be fixed*/
3327         BUG_ON(ti->preempt_count || !irqs_disabled());
3328
3329 need_resched:
3330         add_preempt_count(PREEMPT_ACTIVE);
3331         /*
3332          * We keep the big kernel semaphore locked, but we
3333          * clear ->lock_depth so that schedule() doesnt
3334          * auto-release the semaphore:
3335          */
3336 #ifdef CONFIG_PREEMPT_BKL
3337         saved_lock_depth = task->lock_depth;
3338         task->lock_depth = -1;
3339 #endif
3340         local_irq_enable();
3341         schedule();
3342         local_irq_disable();
3343 #ifdef CONFIG_PREEMPT_BKL
3344         task->lock_depth = saved_lock_depth;
3345 #endif
3346         sub_preempt_count(PREEMPT_ACTIVE);
3347
3348         /* we could miss a preemption opportunity between schedule and now */
3349         barrier();
3350         if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
3351                 goto need_resched;
3352 }
3353
3354 #endif /* CONFIG_PREEMPT */
3355
3356 int default_wake_function(wait_queue_t *curr, unsigned mode, int sync,
3357                           void *key)
3358 {
3359         task_t *p = curr->private;
3360         return try_to_wake_up(p, mode, sync);
3361 }
3362
3363 EXPORT_SYMBOL(default_wake_function);
3364
3365 /*
3366  * The core wakeup function.  Non-exclusive wakeups (nr_exclusive == 0) just
3367  * wake everything up.  If it's an exclusive wakeup (nr_exclusive == small +ve
3368  * number) then we wake all the non-exclusive tasks and one exclusive task.
3369  *
3370  * There are circumstances in which we can try to wake a task which has already
3371  * started to run but is not in state TASK_RUNNING.  try_to_wake_up() returns
3372  * zero in this (rare) case, and we handle it by continuing to scan the queue.
3373  */
3374 static void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
3375                              int nr_exclusive, int sync, void *key)
3376 {
3377         struct list_head *tmp, *next;
3378
3379         list_for_each_safe(tmp, next, &q->task_list) {
3380                 wait_queue_t *curr;
3381                 unsigned flags;
3382                 curr = list_entry(tmp, wait_queue_t, task_list);
3383                 flags = curr->flags;
3384                 if (curr->func(curr, mode, sync, key) &&
3385                     (flags & WQ_FLAG_EXCLUSIVE) &&
3386                     !--nr_exclusive)
3387                         break;
3388         }
3389 }
3390
3391 /**
3392  * __wake_up - wake up threads blocked on a waitqueue.
3393  * @q: the waitqueue
3394  * @mode: which threads
3395  * @nr_exclusive: how many wake-one or wake-many threads to wake up
3396  * @key: is directly passed to the wakeup function
3397  */
3398 void fastcall __wake_up(wait_queue_head_t *q, unsigned int mode,
3399                         int nr_exclusive, void *key)
3400 {
3401         unsigned long flags;
3402
3403         spin_lock_irqsave(&q->lock, flags);
3404         __wake_up_common(q, mode, nr_exclusive, 0, key);
3405         spin_unlock_irqrestore(&q->lock, flags);
3406 }
3407
3408 EXPORT_SYMBOL(__wake_up);
3409
3410 /*
3411  * Same as __wake_up but called with the spinlock in wait_queue_head_t held.
3412  */
3413 void fastcall __wake_up_locked(wait_queue_head_t *q, unsigned int mode)
3414 {
3415         __wake_up_common(q, mode, 1, 0, NULL);
3416 }
3417
3418 /**
3419  * __wake_up_sync - wake up threads blocked on a waitqueue.
3420  * @q: the waitqueue
3421  * @mode: which threads
3422  * @nr_exclusive: how many wake-one or wake-many threads to wake up
3423  *
3424  * The sync wakeup differs that the waker knows that it will schedule
3425  * away soon, so while the target thread will be woken up, it will not
3426  * be migrated to another CPU - ie. the two threads are 'synchronized'
3427  * with each other. This can prevent needless bouncing between CPUs.
3428  *
3429  * On UP it can prevent extra preemption.
3430  */
3431 void fastcall
3432 __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive)
3433 {
3434         unsigned long flags;
3435         int sync = 1;
3436
3437         if (unlikely(!q))
3438                 return;
3439
3440         if (unlikely(!nr_exclusive))
3441                 sync = 0;
3442
3443         spin_lock_irqsave(&q->lock, flags);
3444         __wake_up_common(q, mode, nr_exclusive, sync, NULL);
3445         spin_unlock_irqrestore(&q->lock, flags);
3446 }
3447 EXPORT_SYMBOL_GPL(__wake_up_sync);      /* For internal use only */
3448
3449 void fastcall complete(struct completion *x)
3450 {
3451         unsigned long flags;
3452
3453         spin_lock_irqsave(&x->wait.lock, flags);
3454         x->done++;
3455         __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
3456                          1, 0, NULL);
3457         spin_unlock_irqrestore(&x->wait.lock, flags);
3458 }
3459 EXPORT_SYMBOL(complete);
3460
3461 void fastcall complete_all(struct completion *x)
3462 {
3463         unsigned long flags;
3464
3465         spin_lock_irqsave(&x->wait.lock, flags);
3466         x->done += UINT_MAX/2;
3467         __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
3468                          0, 0, NULL);
3469         spin_unlock_irqrestore(&x->wait.lock, flags);
3470 }
3471 EXPORT_SYMBOL(complete_all);
3472
3473 void fastcall __sched wait_for_completion(struct completion *x)
3474 {
3475         might_sleep();
3476         spin_lock_irq(&x->wait.lock);
3477         if (!x->done) {
3478                 DECLARE_WAITQUEUE(wait, current);
3479
3480                 wait.flags |= WQ_FLAG_EXCLUSIVE;
3481                 __add_wait_queue_tail(&x->wait, &wait);
3482                 do {
3483                         __set_current_state(TASK_UNINTERRUPTIBLE);
3484                         spin_unlock_irq(&x->wait.lock);
3485                         schedule();
3486                         spin_lock_irq(&x->wait.lock);
3487                 } while (!x->done);
3488                 __remove_wait_queue(&x->wait, &wait);
3489         }
3490         x->done--;
3491         spin_unlock_irq(&x->wait.lock);
3492 }
3493 EXPORT_SYMBOL(wait_for_completion);
3494
3495 unsigned long fastcall __sched
3496 wait_for_completion_timeout(struct completion *x, unsigned long timeout)
3497 {
3498         might_sleep();
3499
3500         spin_lock_irq(&x->wait.lock);
3501         if (!x->done) {
3502                 DECLARE_WAITQUEUE(wait, current);
3503
3504                 wait.flags |= WQ_FLAG_EXCLUSIVE;
3505                 __add_wait_queue_tail(&x->wait, &wait);
3506                 do {
3507                         __set_current_state(TASK_UNINTERRUPTIBLE);
3508                         spin_unlock_irq(&x->wait.lock);
3509                         timeout = schedule_timeout(timeout);
3510                         spin_lock_irq(&x->wait.lock);
3511                         if (!timeout) {
3512                                 __remove_wait_queue(&x->wait, &wait);
3513                                 goto out;
3514                         }
3515                 } while (!x->done);
3516                 __remove_wait_queue(&x->wait, &wait);
3517         }
3518         x->done--;
3519 out:
3520         spin_unlock_irq(&x->wait.lock);
3521         return timeout;
3522 }
3523 EXPORT_SYMBOL(wait_for_completion_timeout);
3524
3525 int fastcall __sched wait_for_completion_interruptible(struct completion *x)
3526 {
3527         int ret = 0;
3528
3529         might_sleep();
3530
3531         spin_lock_irq(&x->wait.lock);
3532         if (!x->done) {
3533                 DECLARE_WAITQUEUE(wait, current);
3534
3535                 wait.flags |= WQ_FLAG_EXCLUSIVE;
3536                 __add_wait_queue_tail(&x->wait, &wait);
3537                 do {
3538                         if (signal_pending(current)) {
3539                                 ret = -ERESTARTSYS;
3540                                 __remove_wait_queue(&x->wait, &wait);
3541                                 goto out;
3542                         }
3543                         __set_current_state(TASK_INTERRUPTIBLE);
3544                         spin_unlock_irq(&x->wait.lock);
3545                         schedule();
3546                         spin_lock_irq(&x->wait.lock);
3547                 } while (!x->done);
3548                 __remove_wait_queue(&x->wait, &wait);
3549         }
3550         x->done--;
3551 out:
3552         spin_unlock_irq(&x->wait.lock);
3553
3554         return ret;
3555 }
3556 EXPORT_SYMBOL(wait_for_completion_interruptible);
3557
3558 unsigned long fastcall __sched
3559 wait_for_completion_interruptible_timeout(struct completion *x,
3560                                           unsigned long timeout)
3561 {
3562         might_sleep();
3563
3564         spin_lock_irq(&x->wait.lock);
3565         if (!x->done) {
3566                 DECLARE_WAITQUEUE(wait, current);
3567
3568                 wait.flags |= WQ_FLAG_EXCLUSIVE;
3569                 __add_wait_queue_tail(&x->wait, &wait);
3570                 do {
3571                         if (signal_pending(current)) {
3572                                 timeout = -ERESTARTSYS;
3573                                 __remove_wait_queue(&x->wait, &wait);
3574                                 goto out;
3575                         }
3576                         __set_current_state(TASK_INTERRUPTIBLE);
3577                         spin_unlock_irq(&x->wait.lock);
3578                         timeout = schedule_timeout(timeout);
3579                         spin_lock_irq(&x->wait.lock);
3580                         if (!timeout) {
3581                                 __remove_wait_queue(&x->wait, &wait);
3582                                 goto out;
3583                         }
3584                 } while (!x->done);
3585                 __remove_wait_queue(&x->wait, &wait);
3586         }
3587         x->done--;
3588 out:
3589         spin_unlock_irq(&x->wait.lock);
3590         return timeout;
3591 }
3592 EXPORT_SYMBOL(wait_for_completion_interruptible_timeout);
3593
3594
3595 #define SLEEP_ON_VAR                                    \
3596         unsigned long flags;                            \
3597         wait_queue_t wait;                              \
3598         init_waitqueue_entry(&wait, current);
3599
3600 #define SLEEP_ON_HEAD                                   \
3601         spin_lock_irqsave(&q->lock,flags);              \
3602         __add_wait_queue(q, &wait);                     \
3603         spin_unlock(&q->lock);
3604
3605 #define SLEEP_ON_TAIL                                   \
3606         spin_lock_irq(&q->lock);                        \
3607         __remove_wait_queue(q, &wait);                  \
3608         spin_unlock_irqrestore(&q->lock, flags);
3609
3610 void fastcall __sched interruptible_sleep_on(wait_queue_head_t *q)
3611 {
3612         SLEEP_ON_VAR
3613
3614         current->state = TASK_INTERRUPTIBLE;
3615
3616         SLEEP_ON_HEAD
3617         schedule();
3618         SLEEP_ON_TAIL
3619 }
3620
3621 EXPORT_SYMBOL(interruptible_sleep_on);
3622
3623 long fastcall __sched
3624 interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
3625 {
3626         SLEEP_ON_VAR
3627
3628         current->state = TASK_INTERRUPTIBLE;
3629
3630         SLEEP_ON_HEAD
3631         timeout = schedule_timeout(timeout);
3632         SLEEP_ON_TAIL
3633
3634         return timeout;
3635 }
3636
3637 EXPORT_SYMBOL(interruptible_sleep_on_timeout);
3638
3639 void fastcall __sched sleep_on(wait_queue_head_t *q)
3640 {
3641         SLEEP_ON_VAR
3642
3643         current->state = TASK_UNINTERRUPTIBLE;
3644
3645         SLEEP_ON_HEAD
3646         schedule();
3647         SLEEP_ON_TAIL
3648 }
3649
3650 EXPORT_SYMBOL(sleep_on);
3651
3652 long fastcall __sched sleep_on_timeout(wait_queue_head_t *q, long timeout)
3653 {
3654         SLEEP_ON_VAR
3655
3656         current->state = TASK_UNINTERRUPTIBLE;
3657
3658         SLEEP_ON_HEAD
3659         timeout = schedule_timeout(timeout);
3660         SLEEP_ON_TAIL
3661
3662         return timeout;
3663 }
3664
3665 EXPORT_SYMBOL(sleep_on_timeout);
3666
3667 void set_user_nice(task_t *p, long nice)
3668 {
3669         unsigned long flags;
3670         prio_array_t *array;
3671         runqueue_t *rq;
3672         int old_prio, new_prio, delta;
3673
3674         if (TASK_NICE(p) == nice || nice < -20 || nice > 19)
3675                 return;
3676         /*
3677          * We have to be careful, if called from sys_setpriority(),
3678          * the task might be in the middle of scheduling on another CPU.
3679          */
3680         rq = task_rq_lock(p, &flags);
3681         /*
3682          * The RT priorities are set via sched_setscheduler(), but we still
3683          * allow the 'normal' nice value to be set - but as expected
3684          * it wont have any effect on scheduling until the task is
3685          * not SCHED_NORMAL/SCHED_BATCH:
3686          */
3687         if (rt_task(p)) {
3688                 p->static_prio = NICE_TO_PRIO(nice);
3689                 goto out_unlock;
3690         }
3691         array = p->array;
3692         if (array)
3693                 dequeue_task(p, array);
3694
3695         old_prio = p->prio;
3696         new_prio = NICE_TO_PRIO(nice);
3697         delta = new_prio - old_prio;
3698         p->static_prio = NICE_TO_PRIO(nice);
3699         p->prio += delta;
3700
3701         if (array) {
3702                 enqueue_task(p, array);
3703                 /*
3704                  * If the task increased its priority or is running and
3705                  * lowered its priority, then reschedule its CPU:
3706                  */
3707                 if (delta < 0 || (delta > 0 && task_running(rq, p)))
3708                         resched_task(rq->curr);
3709         }
3710 out_unlock:
3711         task_rq_unlock(rq, &flags);
3712 }
3713
3714 EXPORT_SYMBOL(set_user_nice);
3715
3716 /*
3717  * can_nice - check if a task can reduce its nice value
3718  * @p: task
3719  * @nice: nice value
3720  */
3721 int can_nice(const task_t *p, const int nice)
3722 {
3723         /* convert nice value [19,-20] to rlimit style value [1,40] */
3724         int nice_rlim = 20 - nice;
3725         return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur ||
3726                 capable(CAP_SYS_NICE));
3727 }
3728
3729 #ifdef __ARCH_WANT_SYS_NICE
3730
3731 /*
3732  * sys_nice - change the priority of the current process.
3733  * @increment: priority increment
3734  *
3735  * sys_setpriority is a more generic, but much slower function that
3736  * does similar things.
3737  */
3738 asmlinkage long sys_nice(int increment)
3739 {
3740         int retval;
3741         long nice;
3742
3743         /*
3744          * Setpriority might change our priority at the same moment.
3745          * We don't have to worry. Conceptually one call occurs first
3746          * and we have a single winner.
3747          */
3748         if (increment < -40)
3749                 increment = -40;
3750         if (increment > 40)
3751                 increment = 40;
3752
3753         nice = PRIO_TO_NICE(current->static_prio) + increment;
3754         if (nice < -20)
3755                 nice = -20;
3756         if (nice > 19)
3757                 nice = 19;
3758
3759         if (increment < 0 && !can_nice(current, nice))
3760                 return vx_flags(VXF_IGNEG_NICE, 0) ? 0 : -EPERM;
3761
3762         retval = security_task_setnice(current, nice);
3763         if (retval)
3764                 return retval;
3765
3766         set_user_nice(current, nice);
3767         return 0;
3768 }
3769
3770 #endif
3771
3772 /**
3773  * task_prio - return the priority value of a given task.
3774  * @p: the task in question.
3775  *
3776  * This is the priority value as seen by users in /proc.
3777  * RT tasks are offset by -200. Normal tasks are centered
3778  * around 0, value goes from -16 to +15.
3779  */
3780 int task_prio(const task_t *p)
3781 {
3782         return p->prio - MAX_RT_PRIO;
3783 }
3784
3785 /**
3786  * task_nice - return the nice value of a given task.
3787  * @p: the task in question.
3788  */
3789 int task_nice(const task_t *p)
3790 {
3791         return TASK_NICE(p);
3792 }
3793 EXPORT_SYMBOL_GPL(task_nice);
3794
3795 /**
3796  * idle_cpu - is a given cpu idle currently?
3797  * @cpu: the processor in question.
3798  */
3799 int idle_cpu(int cpu)
3800 {
3801         return cpu_curr(cpu) == cpu_rq(cpu)->idle;
3802 }
3803
3804 /**
3805  * idle_task - return the idle task for a given cpu.
3806  * @cpu: the processor in question.
3807  */
3808 task_t *idle_task(int cpu)
3809 {
3810         return cpu_rq(cpu)->idle;
3811 }
3812
3813 /**
3814  * find_process_by_pid - find a process with a matching PID value.
3815  * @pid: the pid in question.
3816  */
3817 static inline task_t *find_process_by_pid(pid_t pid)
3818 {
3819         return pid ? find_task_by_pid(pid) : current;
3820 }
3821
3822 /* Actually do priority change: must hold rq lock. */
3823 static void __setscheduler(struct task_struct *p, int policy, int prio)
3824 {
3825         BUG_ON(p->array);
3826         p->policy = policy;
3827         p->rt_priority = prio;
3828         if (policy != SCHED_NORMAL && policy != SCHED_BATCH) {
3829                 p->prio = MAX_RT_PRIO-1 - p->rt_priority;
3830         } else {
3831                 p->prio = p->static_prio;
3832                 /*
3833                  * SCHED_BATCH tasks are treated as perpetual CPU hogs:
3834                  */
3835                 if (policy == SCHED_BATCH)
3836                         p->sleep_avg = 0;
3837         }
3838 }
3839
3840 /**
3841  * sched_setscheduler - change the scheduling policy and/or RT priority of
3842  * a thread.
3843  * @p: the task in question.
3844  * @policy: new policy.
3845  * @param: structure containing the new RT priority.
3846  */
3847 int sched_setscheduler(struct task_struct *p, int policy,
3848                        struct sched_param *param)
3849 {
3850         int retval;
3851         int oldprio, oldpolicy = -1;
3852         prio_array_t *array;
3853         unsigned long flags;
3854         runqueue_t *rq;
3855
3856 recheck:
3857         /* double check policy once rq lock held */
3858         if (policy < 0)
3859                 policy = oldpolicy = p->policy;
3860         else if (policy != SCHED_FIFO && policy != SCHED_RR &&
3861                         policy != SCHED_NORMAL && policy != SCHED_BATCH)
3862                 return -EINVAL;
3863         /*
3864          * Valid priorities for SCHED_FIFO and SCHED_RR are
3865          * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL and
3866          * SCHED_BATCH is 0.
3867          */
3868         if (param->sched_priority < 0 ||
3869             (p->mm && param->sched_priority > MAX_USER_RT_PRIO-1) ||
3870             (!p->mm && param->sched_priority > MAX_RT_PRIO-1))
3871                 return -EINVAL;
3872         if ((policy == SCHED_NORMAL || policy == SCHED_BATCH)
3873                                         != (param->sched_priority == 0))
3874                 return -EINVAL;
3875
3876         /*
3877          * Allow unprivileged RT tasks to decrease priority:
3878          */
3879         if (!capable(CAP_SYS_NICE)) {
3880                 /*
3881                  * can't change policy, except between SCHED_NORMAL
3882                  * and SCHED_BATCH:
3883                  */
3884                 if (((policy != SCHED_NORMAL && p->policy != SCHED_BATCH) &&
3885                         (policy != SCHED_BATCH && p->policy != SCHED_NORMAL)) &&
3886                                 !p->signal->rlim[RLIMIT_RTPRIO].rlim_cur)
3887                         return -EPERM;
3888                 /* can't increase priority */
3889                 if ((policy != SCHED_NORMAL && policy != SCHED_BATCH) &&
3890                     param->sched_priority > p->rt_priority &&
3891                     param->sched_priority >
3892                                 p->signal->rlim[RLIMIT_RTPRIO].rlim_cur)
3893                         return -EPERM;
3894                 /* can't change other user's priorities */
3895                 if ((current->euid != p->euid) &&
3896                     (current->euid != p->uid))
3897                         return -EPERM;
3898         }
3899
3900         retval = security_task_setscheduler(p, policy, param);
3901         if (retval)
3902                 return retval;
3903         /*
3904          * To be able to change p->policy safely, the apropriate
3905          * runqueue lock must be held.
3906          */
3907         rq = task_rq_lock(p, &flags);
3908         /* recheck policy now with rq lock held */
3909         if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
3910                 policy = oldpolicy = -1;
3911                 task_rq_unlock(rq, &flags);
3912                 goto recheck;
3913         }
3914         array = p->array;
3915         if (array)
3916                 deactivate_task(p, rq);
3917         oldprio = p->prio;
3918         __setscheduler(p, policy, param->sched_priority);
3919         if (array) {
3920                 vx_activate_task(p);
3921                 __activate_task(p, rq);
3922                 /*
3923                  * Reschedule if we are currently running on this runqueue and
3924                  * our priority decreased, or if we are not currently running on
3925                  * this runqueue and our priority is higher than the current's
3926                  */
3927                 if (task_running(rq, p)) {
3928                         if (p->prio > oldprio)
3929                                 resched_task(rq->curr);
3930                 } else if (TASK_PREEMPTS_CURR(p, rq))
3931                         resched_task(rq->curr);
3932         }
3933         task_rq_unlock(rq, &flags);
3934         return 0;
3935 }
3936 EXPORT_SYMBOL_GPL(sched_setscheduler);
3937
3938 static int
3939 do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
3940 {
3941         int retval;
3942         struct sched_param lparam;
3943         struct task_struct *p;
3944
3945         if (!param || pid < 0)
3946                 return -EINVAL;
3947         if (copy_from_user(&lparam, param, sizeof(struct sched_param)))
3948                 return -EFAULT;
3949         read_lock_irq(&tasklist_lock);
3950         p = find_process_by_pid(pid);
3951         if (!p) {
3952                 read_unlock_irq(&tasklist_lock);
3953                 return -ESRCH;
3954         }
3955         retval = sched_setscheduler(p, policy, &lparam);
3956         read_unlock_irq(&tasklist_lock);
3957         return retval;
3958 }
3959
3960 /**
3961  * sys_sched_setscheduler - set/change the scheduler policy and RT priority
3962  * @pid: the pid in question.
3963  * @policy: new policy.
3964  * @param: structure containing the new RT priority.
3965  */
3966 asmlinkage long sys_sched_setscheduler(pid_t pid, int policy,
3967                                        struct sched_param __user *param)
3968 {
3969         /* negative values for policy are not valid */
3970         if (policy < 0)
3971                 return -EINVAL;
3972
3973         return do_sched_setscheduler(pid, policy, param);
3974 }
3975
3976 /**
3977  * sys_sched_setparam - set/change the RT priority of a thread
3978  * @pid: the pid in question.
3979  * @param: structure containing the new RT priority.
3980  */
3981 asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
3982 {
3983         return do_sched_setscheduler(pid, -1, param);
3984 }
3985
3986 /**
3987  * sys_sched_getscheduler - get the policy (scheduling class) of a thread
3988  * @pid: the pid in question.
3989  */
3990 asmlinkage long sys_sched_getscheduler(pid_t pid)
3991 {
3992         int retval = -EINVAL;
3993         task_t *p;
3994
3995         if (pid < 0)
3996                 goto out_nounlock;
3997
3998         retval = -ESRCH;
3999         read_lock(&tasklist_lock);
4000         p = find_process_by_pid(pid);
4001         if (p) {
4002                 retval = security_task_getscheduler(p);
4003                 if (!retval)
4004                         retval = p->policy;
4005         }
4006         read_unlock(&tasklist_lock);
4007
4008 out_nounlock:
4009         return retval;
4010 }
4011
4012 /**
4013  * sys_sched_getscheduler - get the RT priority of a thread
4014  * @pid: the pid in question.
4015  * @param: structure containing the RT priority.
4016  */
4017 asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param)
4018 {
4019         struct sched_param lp;
4020         int retval = -EINVAL;
4021         task_t *p;
4022
4023         if (!param || pid < 0)
4024                 goto out_nounlock;
4025
4026         read_lock(&tasklist_lock);
4027         p = find_process_by_pid(pid);
4028         retval = -ESRCH;
4029         if (!p)
4030                 goto out_unlock;
4031
4032         retval = security_task_getscheduler(p);
4033         if (retval)
4034                 goto out_unlock;
4035
4036         lp.sched_priority = p->rt_priority;
4037         read_unlock(&tasklist_lock);
4038
4039         /*
4040          * This one might sleep, we cannot do it with a spinlock held ...
4041          */
4042         retval = copy_to_user(param, &lp, sizeof(*param)) ? -EFAULT : 0;
4043
4044 out_nounlock:
4045         return retval;
4046
4047 out_unlock:
4048         read_unlock(&tasklist_lock);
4049         return retval;
4050 }
4051
4052 long sched_setaffinity(pid_t pid, cpumask_t new_mask)
4053 {
4054         task_t *p;
4055         int retval;
4056         cpumask_t cpus_allowed;
4057
4058         lock_cpu_hotplug();
4059         read_lock(&tasklist_lock);
4060
4061         p = find_process_by_pid(pid);
4062         if (!p) {
4063                 read_unlock(&tasklist_lock);
4064                 unlock_cpu_hotplug();
4065                 return -ESRCH;
4066         }
4067
4068         /*
4069          * It is not safe to call set_cpus_allowed with the
4070          * tasklist_lock held.  We will bump the task_struct's
4071          * usage count and then drop tasklist_lock.
4072          */
4073         get_task_struct(p);
4074         read_unlock(&tasklist_lock);
4075
4076         retval = -EPERM;
4077         if ((current->euid != p->euid) && (current->euid != p->uid) &&
4078                         !capable(CAP_SYS_NICE))
4079                 goto out_unlock;
4080
4081         cpus_allowed = cpuset_cpus_allowed(p);
4082         cpus_and(new_mask, new_mask, cpus_allowed);
4083         retval = set_cpus_allowed(p, new_mask);
4084
4085 out_unlock:
4086         put_task_struct(p);
4087         unlock_cpu_hotplug();
4088         return retval;
4089 }
4090
4091 static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
4092                              cpumask_t *new_mask)
4093 {
4094         if (len < sizeof(cpumask_t)) {
4095                 memset(new_mask, 0, sizeof(cpumask_t));
4096         } else if (len > sizeof(cpumask_t)) {
4097                 len = sizeof(cpumask_t);
4098         }
4099         return copy_from_user(new_mask, user_mask_ptr, len) ? -EFAULT : 0;
4100 }
4101
4102 /**
4103  * sys_sched_setaffinity - set the cpu affinity of a process
4104  * @pid: pid of the process
4105  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4106  * @user_mask_ptr: user-space pointer to the new cpu mask
4107  */
4108 asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len,
4109                                       unsigned long __user *user_mask_ptr)
4110 {
4111         cpumask_t new_mask;
4112         int retval;
4113
4114         retval = get_user_cpu_mask(user_mask_ptr, len, &new_mask);
4115         if (retval)
4116                 return retval;
4117
4118         return sched_setaffinity(pid, new_mask);
4119 }
4120
4121 /*
4122  * Represents all cpu's present in the system
4123  * In systems capable of hotplug, this map could dynamically grow
4124  * as new cpu's are detected in the system via any platform specific
4125  * method, such as ACPI for e.g.
4126  */
4127
4128 cpumask_t cpu_present_map __read_mostly;
4129 EXPORT_SYMBOL(cpu_present_map);
4130
4131 #ifndef CONFIG_SMP
4132 cpumask_t cpu_online_map __read_mostly = CPU_MASK_ALL;
4133 cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL;
4134 #endif
4135
4136 long sched_getaffinity(pid_t pid, cpumask_t *mask)
4137 {
4138         int retval;
4139         task_t *p;
4140
4141         lock_cpu_hotplug();
4142         read_lock(&tasklist_lock);
4143
4144         retval = -ESRCH;
4145         p = find_process_by_pid(pid);
4146         if (!p)
4147                 goto out_unlock;
4148
4149         retval = 0;
4150         cpus_and(*mask, p->cpus_allowed, cpu_online_map);
4151
4152 out_unlock:
4153         read_unlock(&tasklist_lock);
4154         unlock_cpu_hotplug();
4155         if (retval)
4156                 return retval;
4157
4158         return 0;
4159 }
4160
4161 /**
4162  * sys_sched_getaffinity - get the cpu affinity of a process
4163  * @pid: pid of the process
4164  * @len: length in bytes of the bitmask pointed to by user_mask_ptr
4165  * @user_mask_ptr: user-space pointer to hold the current cpu mask
4166  */
4167 asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
4168                                       unsigned long __user *user_mask_ptr)
4169 {
4170         int ret;
4171         cpumask_t mask;
4172
4173         if (len < sizeof(cpumask_t))
4174                 return -EINVAL;
4175
4176         ret = sched_getaffinity(pid, &mask);
4177         if (ret < 0)
4178                 return ret;
4179
4180         if (copy_to_user(user_mask_ptr, &mask, sizeof(cpumask_t)))
4181                 return -EFAULT;
4182
4183         return sizeof(cpumask_t);
4184 }
4185
4186 /**
4187  * sys_sched_yield - yield the current processor to other threads.
4188  *
4189  * this function yields the current CPU by moving the calling thread
4190  * to the expired array. If there are no other threads running on this
4191  * CPU then this function will return.
4192  */
4193 asmlinkage long sys_sched_yield(void)
4194 {
4195         runqueue_t *rq = this_rq_lock();
4196         prio_array_t *array = current->array;
4197         prio_array_t *target = rq->expired;
4198
4199         schedstat_inc(rq, yld_cnt);
4200         /*
4201          * We implement yielding by moving the task into the expired
4202          * queue.
4203          *
4204          * (special rule: RT tasks will just roundrobin in the active
4205          *  array.)
4206          */
4207         if (rt_task(current))
4208                 target = rq->active;
4209
4210         if (array->nr_active == 1) {
4211                 schedstat_inc(rq, yld_act_empty);
4212                 if (!rq->expired->nr_active)
4213                         schedstat_inc(rq, yld_both_empty);
4214         } else if (!rq->expired->nr_active)
4215                 schedstat_inc(rq, yld_exp_empty);
4216
4217         if (array != target) {
4218                 dequeue_task(current, array);
4219                 enqueue_task(current, target);
4220         } else
4221                 /*
4222                  * requeue_task is cheaper so perform that if possible.
4223                  */
4224                 requeue_task(current, array);
4225
4226         /*
4227          * Since we are going to call schedule() anyway, there's
4228          * no need to preempt or enable interrupts:
4229          */
4230         __release(rq->lock);
4231         _raw_spin_unlock(&rq->lock);
4232         preempt_enable_no_resched();
4233
4234         schedule();
4235
4236         return 0;
4237 }
4238
4239 static inline void __cond_resched(void)
4240 {
4241         /*
4242          * The BKS might be reacquired before we have dropped
4243          * PREEMPT_ACTIVE, which could trigger a second
4244          * cond_resched() call.
4245          */
4246         if (unlikely(preempt_count()))
4247                 return;
4248         if (unlikely(system_state != SYSTEM_RUNNING))
4249                 return;
4250         do {
4251                 add_preempt_count(PREEMPT_ACTIVE);
4252                 schedule();
4253                 sub_preempt_count(PREEMPT_ACTIVE);
4254         } while (need_resched());
4255 }
4256
4257 int __sched cond_resched(void)
4258 {
4259         if (need_resched()) {
4260                 __cond_resched();
4261                 return 1;
4262         }
4263         return 0;
4264 }
4265
4266 EXPORT_SYMBOL(cond_resched);
4267
4268 /*
4269  * cond_resched_lock() - if a reschedule is pending, drop the given lock,
4270  * call schedule, and on return reacquire the lock.
4271  *
4272  * This works OK both with and without CONFIG_PREEMPT.  We do strange low-level
4273  * operations here to prevent schedule() from being called twice (once via
4274  * spin_unlock(), once by hand).
4275  */
4276 int cond_resched_lock(spinlock_t *lock)
4277 {
4278         int ret = 0;
4279
4280         if (need_lockbreak(lock)) {
4281                 spin_unlock(lock);
4282                 cpu_relax();
4283                 ret = 1;
4284                 spin_lock(lock);
4285         }
4286         if (need_resched()) {
4287                 _raw_spin_unlock(lock);
4288                 preempt_enable_no_resched();
4289                 __cond_resched();
4290                 ret = 1;
4291                 spin_lock(lock);
4292         }
4293         return ret;
4294 }
4295
4296 EXPORT_SYMBOL(cond_resched_lock);
4297
4298 int __sched cond_resched_softirq(void)
4299 {
4300         BUG_ON(!in_softirq());
4301
4302         if (need_resched()) {
4303                 __local_bh_enable();
4304                 __cond_resched();
4305                 local_bh_disable();
4306                 return 1;
4307         }
4308         return 0;
4309 }
4310
4311 EXPORT_SYMBOL(cond_resched_softirq);
4312
4313
4314 /**
4315  * yield - yield the current processor to other threads.
4316  *
4317  * this is a shortcut for kernel-space yielding - it marks the
4318  * thread runnable and calls sys_sched_yield().
4319  */
4320 void __sched yield(void)
4321 {
4322         set_current_state(TASK_RUNNING);
4323         sys_sched_yield();
4324 }
4325
4326 EXPORT_SYMBOL(yield);
4327
4328 /*
4329  * This task is about to go to sleep on IO.  Increment rq->nr_iowait so
4330  * that process accounting knows that this is a task in IO wait state.
4331  *
4332  * But don't do that if it is a deliberate, throttling IO wait (this task
4333  * has set its backing_dev_info: the queue against which it should throttle)
4334  */
4335 void __sched io_schedule(void)
4336 {
4337         struct runqueue *rq = &per_cpu(runqueues, raw_smp_processor_id());
4338
4339         atomic_inc(&rq->nr_iowait);
4340         schedule();
4341         atomic_dec(&rq->nr_iowait);
4342 }
4343
4344 EXPORT_SYMBOL(io_schedule);
4345
4346 long __sched io_schedule_timeout(long timeout)
4347 {
4348         struct runqueue *rq = &per_cpu(runqueues, raw_smp_processor_id());
4349         long ret;
4350
4351         atomic_inc(&rq->nr_iowait);
4352         ret = schedule_timeout(timeout);
4353         atomic_dec(&rq->nr_iowait);
4354         return ret;
4355 }
4356
4357 /**
4358  * sys_sched_get_priority_max - return maximum RT priority.
4359  * @policy: scheduling class.
4360  *
4361  * this syscall returns the maximum rt_priority that can be used
4362  * by a given scheduling class.
4363  */
4364 asmlinkage long sys_sched_get_priority_max(int policy)
4365 {
4366         int ret = -EINVAL;
4367
4368         switch (policy) {
4369         case SCHED_FIFO:
4370         case SCHED_RR:
4371                 ret = MAX_USER_RT_PRIO-1;
4372                 break;
4373         case SCHED_NORMAL:
4374         case SCHED_BATCH:
4375                 ret = 0;
4376                 break;
4377         }
4378         return ret;
4379 }
4380
4381 /**
4382  * sys_sched_get_priority_min - return minimum RT priority.
4383  * @policy: scheduling class.
4384  *
4385  * this syscall returns the minimum rt_priority that can be used
4386  * by a given scheduling class.
4387  */
4388 asmlinkage long sys_sched_get_priority_min(int policy)
4389 {
4390         int ret = -EINVAL;
4391
4392         switch (policy) {
4393         case SCHED_FIFO:
4394         case SCHED_RR:
4395                 ret = 1;
4396                 break;
4397         case SCHED_NORMAL:
4398         case SCHED_BATCH:
4399                 ret = 0;
4400         }
4401         return ret;
4402 }
4403
4404 /**
4405  * sys_sched_rr_get_interval - return the default timeslice of a process.
4406  * @pid: pid of the process.
4407  * @interval: userspace pointer to the timeslice value.
4408  *
4409  * this syscall writes the default timeslice value of a given process
4410  * into the user-space timespec buffer. A value of '0' means infinity.
4411  */
4412 asmlinkage
4413 long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
4414 {
4415         int retval = -EINVAL;
4416         struct timespec t;
4417         task_t *p;
4418
4419         if (pid < 0)
4420                 goto out_nounlock;
4421
4422         retval = -ESRCH;
4423         read_lock(&tasklist_lock);
4424         p = find_process_by_pid(pid);
4425         if (!p)
4426                 goto out_unlock;
4427
4428         retval = security_task_getscheduler(p);
4429         if (retval)
4430                 goto out_unlock;
4431
4432         jiffies_to_timespec(p->policy & SCHED_FIFO ?
4433                                 0 : task_timeslice(p), &t);
4434         read_unlock(&tasklist_lock);
4435         retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0;
4436 out_nounlock:
4437         return retval;
4438 out_unlock:
4439         read_unlock(&tasklist_lock);
4440         return retval;
4441 }
4442
4443 static inline struct task_struct *eldest_child(struct task_struct *p)
4444 {
4445         if (list_empty(&p->children)) return NULL;
4446         return list_entry(p->children.next,struct task_struct,sibling);
4447 }
4448
4449 static inline struct task_struct *older_sibling(struct task_struct *p)
4450 {
4451         if (p->sibling.prev==&p->parent->children) return NULL;
4452         return list_entry(p->sibling.prev,struct task_struct,sibling);
4453 }
4454
4455 static inline struct task_struct *younger_sibling(struct task_struct *p)
4456 {
4457         if (p->sibling.next==&p->parent->children) return NULL;
4458         return list_entry(p->sibling.next,struct task_struct,sibling);
4459 }
4460
4461 static void show_task(task_t *p)
4462 {
4463         task_t *relative;
4464         unsigned state;
4465         unsigned long free = 0;
4466         static const char *stat_nam[] = { "R", "S", "D", "T", "t", "Z", "X" };
4467
4468         printk("%-13.13s ", p->comm);
4469         state = p->state ? __ffs(p->state) + 1 : 0;
4470         if (state < ARRAY_SIZE(stat_nam))
4471                 printk(stat_nam[state]);
4472         else
4473                 printk("?");
4474 #if (BITS_PER_LONG == 32)
4475         if (state == TASK_RUNNING)
4476                 printk(" running ");
4477         else
4478                 printk(" %08lX ", thread_saved_pc(p));
4479 #else
4480         if (state == TASK_RUNNING)
4481                 printk("  running task   ");
4482         else
4483                 printk(" %016lx ", thread_saved_pc(p));
4484 #endif
4485 #ifdef CONFIG_DEBUG_STACK_USAGE
4486         {
4487                 unsigned long *n = end_of_stack(p);
4488                 while (!*n)
4489                         n++;
4490                 free = (unsigned long)n - (unsigned long)end_of_stack(p);
4491         }
4492 #endif
4493         printk("%5lu %5d %6d ", free, p->pid, p->parent->pid);
4494         if ((relative = eldest_child(p)))
4495                 printk("%5d ", relative->pid);
4496         else
4497                 printk("      ");
4498         if ((relative = younger_sibling(p)))
4499                 printk("%7d", relative->pid);
4500         else
4501                 printk("       ");
4502         if ((relative = older_sibling(p)))
4503                 printk(" %5d", relative->pid);
4504         else
4505                 printk("      ");
4506         if (!p->mm)
4507                 printk(" (L-TLB)\n");
4508         else
4509                 printk(" (NOTLB)\n");
4510
4511         if (state != TASK_RUNNING)
4512                 show_stack(p, NULL);
4513 }
4514
4515 void show_state(void)
4516 {
4517         task_t *g, *p;
4518
4519 #if (BITS_PER_LONG == 32)
4520         printk("\n"
4521                "                                               sibling\n");
4522         printk("  task             PC      pid father child younger older\n");
4523 #else
4524         printk("\n"
4525                "                                                       sibling\n");
4526         printk("  task                 PC          pid father child younger older\n");
4527 #endif
4528         read_lock(&tasklist_lock);
4529         do_each_thread(g, p) {
4530                 /*
4531                  * reset the NMI-timeout, listing all files on a slow
4532                  * console might take alot of time:
4533                  */
4534                 touch_nmi_watchdog();
4535                 show_task(p);
4536         } while_each_thread(g, p);
4537
4538         read_unlock(&tasklist_lock);
4539         mutex_debug_show_all_locks();
4540 }
4541
4542 /**
4543  * init_idle - set up an idle thread for a given CPU
4544  * @idle: task in question
4545  * @cpu: cpu the idle task belongs to
4546  *
4547  * NOTE: this function does not set the idle thread's NEED_RESCHED
4548  * flag, to make booting more robust.
4549  */
4550 void __devinit init_idle(task_t *idle, int cpu)
4551 {
4552         runqueue_t *rq = cpu_rq(cpu);
4553         unsigned long flags;
4554
4555         idle->timestamp = sched_clock();
4556         idle->sleep_avg = 0;
4557         idle->array = NULL;
4558         idle->prio = MAX_PRIO;
4559         idle->state = TASK_RUNNING;
4560         idle->cpus_allowed = cpumask_of_cpu(cpu);
4561         set_task_cpu(idle, cpu);
4562
4563         spin_lock_irqsave(&rq->lock, flags);
4564         rq->curr = rq->idle = idle;
4565 #if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW)
4566         idle->oncpu = 1;
4567 #endif
4568         spin_unlock_irqrestore(&rq->lock, flags);
4569
4570         /* Set the preempt count _outside_ the spinlocks! */
4571 #if defined(CONFIG_PREEMPT) && !defined(CONFIG_PREEMPT_BKL)
4572         task_thread_info(idle)->preempt_count = (idle->lock_depth >= 0);
4573 #else
4574         task_thread_info(idle)->preempt_count = 0;
4575 #endif
4576 }
4577
4578 /*
4579  * In a system that switches off the HZ timer nohz_cpu_mask
4580  * indicates which cpus entered this state. This is used
4581  * in the rcu update to wait only for active cpus. For system
4582  * which do not switch off the HZ timer nohz_cpu_mask should
4583  * always be CPU_MASK_NONE.
4584  */
4585 cpumask_t nohz_cpu_mask = CPU_MASK_NONE;
4586
4587 #ifdef CONFIG_SMP
4588 /*
4589  * This is how migration works:
4590  *
4591  * 1) we queue a migration_req_t structure in the source CPU's
4592  *    runqueue and wake up that CPU's migration thread.
4593  * 2) we down() the locked semaphore => thread blocks.
4594  * 3) migration thread wakes up (implicitly it forces the migrated
4595  *    thread off the CPU)
4596  * 4) it gets the migration request and checks whether the migrated
4597  *    task is still in the wrong runqueue.
4598  * 5) if it's in the wrong runqueue then the migration thread removes
4599  *    it and puts it into the right queue.
4600  * 6) migration thread up()s the semaphore.
4601  * 7) we wake up and the migration is done.
4602  */
4603
4604 /*
4605  * Change a given task's CPU affinity. Migrate the thread to a
4606  * proper CPU and schedule it away if the CPU it's executing on
4607  * is removed from the allowed bitmask.
4608  *
4609  * NOTE: the caller must have a valid reference to the task, the
4610  * task must not exit() & deallocate itself prematurely.  The
4611  * call is not atomic; no spinlocks may be held.
4612  */
4613 int set_cpus_allowed(task_t *p, cpumask_t new_mask)
4614 {
4615         unsigned long flags;
4616         int ret = 0;
4617         migration_req_t req;
4618         runqueue_t *rq;
4619
4620         rq = task_rq_lock(p, &flags);
4621         if (!cpus_intersects(new_mask, cpu_online_map)) {
4622                 ret = -EINVAL;
4623                 goto out;
4624         }
4625
4626         p->cpus_allowed = new_mask;
4627         /* Can the task run on the task's current CPU? If so, we're done */
4628         if (cpu_isset(task_cpu(p), new_mask))
4629                 goto out;
4630
4631         if (migrate_task(p, any_online_cpu(new_mask), &req)) {
4632                 /* Need help from migration thread: drop lock and wait. */
4633                 task_rq_unlock(rq, &flags);
4634                 wake_up_process(rq->migration_thread);
4635                 wait_for_completion(&req.done);
4636                 tlb_migrate_finish(p->mm);
4637                 return 0;
4638         }
4639 out:
4640         task_rq_unlock(rq, &flags);
4641         return ret;
4642 }
4643
4644 EXPORT_SYMBOL_GPL(set_cpus_allowed);
4645
4646 /*
4647  * Move (not current) task off this cpu, onto dest cpu.  We're doing
4648  * this because either it can't run here any more (set_cpus_allowed()
4649  * away from this CPU, or CPU going down), or because we're
4650  * attempting to rebalance this task on exec (sched_exec).
4651  *
4652  * So we race with normal scheduler movements, but that's OK, as long
4653  * as the task is no longer on this CPU.
4654  */
4655 static void __migrate_task(struct task_struct *p, int src_cpu, int dest_cpu)
4656 {
4657         runqueue_t *rq_dest, *rq_src;
4658
4659         if (unlikely(cpu_is_offline(dest_cpu)))
4660                 return;
4661
4662         rq_src = cpu_rq(src_cpu);
4663         rq_dest = cpu_rq(dest_cpu);
4664
4665         double_rq_lock(rq_src, rq_dest);
4666         /* Already moved. */
4667         if (task_cpu(p) != src_cpu)
4668                 goto out;
4669         /* Affinity changed (again). */
4670         if (!cpu_isset(dest_cpu, p->cpus_allowed))
4671                 goto out;
4672
4673         set_task_cpu(p, dest_cpu);
4674         if (p->array) {
4675                 /*
4676                  * Sync timestamp with rq_dest's before activating.
4677                  * The same thing could be achieved by doing this step
4678                  * afterwards, and pretending it was a local activate.
4679                  * This way is cleaner and logically correct.
4680                  */
4681                 p->timestamp = p->timestamp - rq_src->timestamp_last_tick
4682                                 + rq_dest->timestamp_last_tick;
4683                 deactivate_task(p, rq_src);
4684                 activate_task(p, rq_dest, 0);
4685                 if (TASK_PREEMPTS_CURR(p, rq_dest))
4686                         resched_task(rq_dest->curr);
4687         }
4688
4689 out:
4690         double_rq_unlock(rq_src, rq_dest);
4691 }
4692
4693 /*
4694  * migration_thread - this is a highprio system thread that performs
4695  * thread migration by bumping thread off CPU then 'pushing' onto
4696  * another runqueue.
4697  */
4698 static int migration_thread(void *data)
4699 {
4700         runqueue_t *rq;
4701         int cpu = (long)data;
4702
4703         rq = cpu_rq(cpu);
4704         BUG_ON(rq->migration_thread != current);
4705
4706         set_current_state(TASK_INTERRUPTIBLE);
4707         while (!kthread_should_stop()) {
4708                 struct list_head *head;
4709                 migration_req_t *req;
4710
4711                 try_to_freeze();
4712
4713                 spin_lock_irq(&rq->lock);
4714
4715                 if (cpu_is_offline(cpu)) {
4716                         spin_unlock_irq(&rq->lock);
4717                         goto wait_to_die;
4718                 }
4719
4720                 if (rq->active_balance) {
4721                         active_load_balance(rq, cpu);
4722                         rq->active_balance = 0;
4723                 }
4724
4725                 head = &rq->migration_queue;
4726
4727                 if (list_empty(head)) {
4728                         spin_unlock_irq(&rq->lock);
4729                         schedule();
4730                         set_current_state(TASK_INTERRUPTIBLE);
4731                         continue;
4732                 }
4733                 req = list_entry(head->next, migration_req_t, list);
4734                 list_del_init(head->next);
4735
4736                 spin_unlock(&rq->lock);
4737                 __migrate_task(req->task, cpu, req->dest_cpu);
4738                 local_irq_enable();
4739
4740                 complete(&req->done);
4741         }
4742         __set_current_state(TASK_RUNNING);
4743         return 0;
4744
4745 wait_to_die:
4746         /* Wait for kthread_stop */
4747         set_current_state(TASK_INTERRUPTIBLE);
4748         while (!kthread_should_stop()) {
4749                 schedule();
4750                 set_current_state(TASK_INTERRUPTIBLE);
4751         }
4752         __set_current_state(TASK_RUNNING);
4753         return 0;
4754 }
4755
4756 #ifdef CONFIG_HOTPLUG_CPU
4757 /* Figure out where task on dead CPU should go, use force if neccessary. */
4758 static void move_task_off_dead_cpu(int dead_cpu, struct task_struct *tsk)
4759 {
4760         int dest_cpu;
4761         cpumask_t mask;
4762
4763         /* On same node? */
4764         mask = node_to_cpumask(cpu_to_node(dead_cpu));
4765         cpus_and(mask, mask, tsk->cpus_allowed);
4766         dest_cpu = any_online_cpu(mask);
4767
4768         /* On any allowed CPU? */
4769         if (dest_cpu == NR_CPUS)
4770                 dest_cpu = any_online_cpu(tsk->cpus_allowed);
4771
4772         /* No more Mr. Nice Guy. */
4773         if (dest_cpu == NR_CPUS) {
4774                 cpus_setall(tsk->cpus_allowed);
4775                 dest_cpu = any_online_cpu(tsk->cpus_allowed);
4776
4777                 /*
4778                  * Don't tell them about moving exiting tasks or
4779                  * kernel threads (both mm NULL), since they never
4780                  * leave kernel.
4781                  */
4782                 if (tsk->mm && printk_ratelimit())
4783                         printk(KERN_INFO "process %d (%s) no "
4784                                "longer affine to cpu%d\n",
4785                                tsk->pid, tsk->comm, dead_cpu);
4786         }
4787         __migrate_task(tsk, dead_cpu, dest_cpu);
4788 }
4789
4790 /*
4791  * While a dead CPU has no uninterruptible tasks queued at this point,
4792  * it might still have a nonzero ->nr_uninterruptible counter, because
4793  * for performance reasons the counter is not stricly tracking tasks to
4794  * their home CPUs. So we just add the counter to another CPU's counter,
4795  * to keep the global sum constant after CPU-down:
4796  */
4797 static void migrate_nr_uninterruptible(runqueue_t *rq_src)
4798 {
4799         runqueue_t *rq_dest = cpu_rq(any_online_cpu(CPU_MASK_ALL));
4800         unsigned long flags;
4801
4802         local_irq_save(flags);
4803         double_rq_lock(rq_src, rq_dest);
4804         rq_dest->nr_uninterruptible += rq_src->nr_uninterruptible;
4805         rq_src->nr_uninterruptible = 0;
4806         double_rq_unlock(rq_src, rq_dest);
4807         local_irq_restore(flags);
4808 }
4809
4810 /* Run through task list and migrate tasks from the dead cpu. */
4811 static void migrate_live_tasks(int src_cpu)
4812 {
4813         struct task_struct *tsk, *t;
4814
4815         write_lock_irq(&tasklist_lock);
4816
4817         do_each_thread(t, tsk) {
4818                 if (tsk == current)
4819                         continue;
4820
4821                 if (task_cpu(tsk) == src_cpu)
4822                         move_task_off_dead_cpu(src_cpu, tsk);
4823         } while_each_thread(t, tsk);
4824
4825         write_unlock_irq(&tasklist_lock);
4826 }
4827
4828 /* Schedules idle task to be the next runnable task on current CPU.
4829  * It does so by boosting its priority to highest possible and adding it to
4830  * the _front_ of runqueue. Used by CPU offline code.
4831  */
4832 void sched_idle_next(void)
4833 {
4834         int cpu = smp_processor_id();
4835         runqueue_t *rq = this_rq();
4836         struct task_struct *p = rq->idle;
4837         unsigned long flags;
4838
4839         /* cpu has to be offline */
4840         BUG_ON(cpu_online(cpu));
4841
4842         /* Strictly not necessary since rest of the CPUs are stopped by now
4843          * and interrupts disabled on current cpu.
4844          */
4845         spin_lock_irqsave(&rq->lock, flags);
4846
4847         __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
4848         /* Add idle task to _front_ of it's priority queue */
4849         __activate_idle_task(p, rq);
4850
4851         spin_unlock_irqrestore(&rq->lock, flags);
4852 }
4853
4854 /* Ensures that the idle task is using init_mm right before its cpu goes
4855  * offline.
4856  */
4857 void idle_task_exit(void)
4858 {
4859         struct mm_struct *mm = current->active_mm;
4860
4861         BUG_ON(cpu_online(smp_processor_id()));
4862
4863         if (mm != &init_mm)
4864                 switch_mm(mm, &init_mm, current);
4865         mmdrop(mm);
4866 }
4867
4868 static void migrate_dead(unsigned int dead_cpu, task_t *tsk)
4869 {
4870         struct runqueue *rq = cpu_rq(dead_cpu);
4871
4872         /* Must be exiting, otherwise would be on tasklist. */
4873         BUG_ON(tsk->exit_state != EXIT_ZOMBIE && tsk->exit_state != EXIT_DEAD);
4874
4875         /* Cannot have done final schedule yet: would have vanished. */
4876         BUG_ON(tsk->flags & PF_DEAD);
4877
4878         get_task_struct(tsk);
4879
4880         /*
4881          * Drop lock around migration; if someone else moves it,
4882          * that's OK.  No task can be added to this CPU, so iteration is
4883          * fine.
4884          */
4885         spin_unlock_irq(&rq->lock);
4886         move_task_off_dead_cpu(dead_cpu, tsk);
4887         spin_lock_irq(&rq->lock);
4888
4889         put_task_struct(tsk);
4890 }
4891
4892 /* release_task() removes task from tasklist, so we won't find dead tasks. */
4893 static void migrate_dead_tasks(unsigned int dead_cpu)
4894 {
4895         unsigned arr, i;
4896         struct runqueue *rq = cpu_rq(dead_cpu);
4897
4898         for (arr = 0; arr < 2; arr++) {
4899                 for (i = 0; i < MAX_PRIO; i++) {
4900                         struct list_head *list = &rq->arrays[arr].queue[i];
4901                         while (!list_empty(list))
4902                                 migrate_dead(dead_cpu,
4903                                              list_entry(list->next, task_t,
4904                                                         run_list));
4905                 }
4906         }
4907 }
4908 #endif /* CONFIG_HOTPLUG_CPU */
4909
4910 /*
4911  * migration_call - callback that gets triggered when a CPU is added.
4912  * Here we can start up the necessary migration thread for the new CPU.
4913  */
4914 static int migration_call(struct notifier_block *nfb, unsigned long action,
4915                           void *hcpu)
4916 {
4917         int cpu = (long)hcpu;
4918         struct task_struct *p;
4919         struct runqueue *rq;
4920         unsigned long flags;
4921
4922         switch (action) {
4923         case CPU_UP_PREPARE:
4924                 p = kthread_create(migration_thread, hcpu, "migration/%d",cpu);
4925                 if (IS_ERR(p))
4926                         return NOTIFY_BAD;
4927                 p->flags |= PF_NOFREEZE;
4928                 kthread_bind(p, cpu);
4929                 /* Must be high prio: stop_machine expects to yield to it. */
4930                 rq = task_rq_lock(p, &flags);
4931                 __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
4932                 task_rq_unlock(rq, &flags);
4933                 cpu_rq(cpu)->migration_thread = p;
4934                 break;
4935         case CPU_ONLINE:
4936                 /* Strictly unneccessary, as first user will wake it. */
4937                 wake_up_process(cpu_rq(cpu)->migration_thread);
4938                 break;
4939 #ifdef CONFIG_HOTPLUG_CPU
4940         case CPU_UP_CANCELED:
4941                 /* Unbind it from offline cpu so it can run.  Fall thru. */
4942                 kthread_bind(cpu_rq(cpu)->migration_thread,
4943                              any_online_cpu(cpu_online_map));
4944                 kthread_stop(cpu_rq(cpu)->migration_thread);
4945                 cpu_rq(cpu)->migration_thread = NULL;
4946                 break;
4947         case CPU_DEAD:
4948                 migrate_live_tasks(cpu);
4949                 rq = cpu_rq(cpu);
4950                 kthread_stop(rq->migration_thread);
4951                 rq->migration_thread = NULL;
4952                 /* Idle task back to normal (off runqueue, low prio) */
4953                 rq = task_rq_lock(rq->idle, &flags);
4954                 deactivate_task(rq->idle, rq);
4955                 rq->idle->static_prio = MAX_PRIO;
4956                 __setscheduler(rq->idle, SCHED_NORMAL, 0);
4957                 migrate_dead_tasks(cpu);
4958                 task_rq_unlock(rq, &flags);
4959                 migrate_nr_uninterruptible(rq);
4960                 BUG_ON(rq->nr_running != 0);
4961
4962                 /* No need to migrate the tasks: it was best-effort if
4963                  * they didn't do lock_cpu_hotplug().  Just wake up
4964                  * the requestors. */
4965                 spin_lock_irq(&rq->lock);
4966                 while (!list_empty(&rq->migration_queue)) {
4967                         migration_req_t *req;
4968                         req = list_entry(rq->migration_queue.next,
4969                                          migration_req_t, list);
4970                         list_del_init(&req->list);
4971                         complete(&req->done);
4972                 }
4973                 spin_unlock_irq(&rq->lock);
4974                 break;
4975 #endif
4976         }
4977         return NOTIFY_OK;
4978 }
4979
4980 /* Register at highest priority so that task migration (migrate_all_tasks)
4981  * happens before everything else.
4982  */
4983 static struct notifier_block __devinitdata migration_notifier = {
4984         .notifier_call = migration_call,
4985         .priority = 10
4986 };
4987
4988 int __init migration_init(void)
4989 {
4990         void *cpu = (void *)(long)smp_processor_id();
4991         /* Start one for boot CPU. */
4992         migration_call(&migration_notifier, CPU_UP_PREPARE, cpu);
4993         migration_call(&migration_notifier, CPU_ONLINE, cpu);
4994         register_cpu_notifier(&migration_notifier);
4995         return 0;
4996 }
4997 #endif
4998
4999 #ifdef CONFIG_SMP
5000 #undef SCHED_DOMAIN_DEBUG
5001 #ifdef SCHED_DOMAIN_DEBUG
5002 static void sched_domain_debug(struct sched_domain *sd, int cpu)
5003 {
5004         int level = 0;
5005
5006         if (!sd) {
5007                 printk(KERN_DEBUG "CPU%d attaching NULL sched-domain.\n", cpu);
5008                 return;
5009         }
5010
5011         printk(KERN_DEBUG "CPU%d attaching sched-domain:\n", cpu);
5012
5013         do {
5014                 int i;
5015                 char str[NR_CPUS];
5016                 struct sched_group *group = sd->groups;
5017                 cpumask_t groupmask;
5018
5019                 cpumask_scnprintf(str, NR_CPUS, sd->span);
5020                 cpus_clear(groupmask);
5021
5022                 printk(KERN_DEBUG);
5023                 for (i = 0; i < level + 1; i++)
5024                         printk(" ");
5025                 printk("domain %d: ", level);
5026
5027                 if (!(sd->flags & SD_LOAD_BALANCE)) {
5028                         printk("does not load-balance\n");
5029                         if (sd->parent)
5030                                 printk(KERN_ERR "ERROR: !SD_LOAD_BALANCE domain has parent");
5031                         break;
5032                 }
5033
5034                 printk("span %s\n", str);
5035
5036                 if (!cpu_isset(cpu, sd->span))
5037                         printk(KERN_ERR "ERROR: domain->span does not contain CPU%d\n", cpu);
5038                 if (!cpu_isset(cpu, group->cpumask))
5039                         printk(KERN_ERR "ERROR: domain->groups does not contain CPU%d\n", cpu);
5040
5041                 printk(KERN_DEBUG);
5042                 for (i = 0; i < level + 2; i++)
5043                         printk(" ");
5044                 printk("groups:");
5045                 do {
5046                         if (!group) {
5047                                 printk("\n");
5048                                 printk(KERN_ERR "ERROR: group is NULL\n");
5049                                 break;
5050                         }
5051
5052                         if (!group->cpu_power) {
5053                                 printk("\n");
5054                                 printk(KERN_ERR "ERROR: domain->cpu_power not set\n");
5055                         }
5056
5057                         if (!cpus_weight(group->cpumask)) {
5058                                 printk("\n");
5059                                 printk(KERN_ERR "ERROR: empty group\n");
5060                         }
5061
5062                         if (cpus_intersects(groupmask, group->cpumask)) {
5063                                 printk("\n");
5064                                 printk(KERN_ERR "ERROR: repeated CPUs\n");
5065                         }
5066
5067                         cpus_or(groupmask, groupmask, group->cpumask);
5068
5069                         cpumask_scnprintf(str, NR_CPUS, group->cpumask);
5070                         printk(" %s", str);
5071
5072                         group = group->next;
5073                 } while (group != sd->groups);
5074                 printk("\n");
5075
5076                 if (!cpus_equal(sd->span, groupmask))
5077                         printk(KERN_ERR "ERROR: groups don't span domain->span\n");
5078
5079                 level++;
5080                 sd = sd->parent;
5081
5082                 if (sd) {
5083                         if (!cpus_subset(groupmask, sd->span))
5084                                 printk(KERN_ERR "ERROR: parent span is not a superset of domain->span\n");
5085                 }
5086
5087         } while (sd);
5088 }
5089 #else
5090 #define sched_domain_debug(sd, cpu) {}
5091 #endif
5092
5093 static int sd_degenerate(struct sched_domain *sd)
5094 {
5095         if (cpus_weight(sd->span) == 1)
5096                 return 1;
5097
5098         /* Following flags need at least 2 groups */
5099         if (sd->flags & (SD_LOAD_BALANCE |
5100                          SD_BALANCE_NEWIDLE |
5101                          SD_BALANCE_FORK |
5102                          SD_BALANCE_EXEC)) {
5103                 if (sd->groups != sd->groups->next)
5104                         return 0;
5105         }
5106
5107         /* Following flags don't use groups */
5108         if (sd->flags & (SD_WAKE_IDLE |
5109                          SD_WAKE_AFFINE |
5110                          SD_WAKE_BALANCE))
5111                 return 0;
5112
5113         return 1;
5114 }
5115
5116 static int sd_parent_degenerate(struct sched_domain *sd,
5117                                                 struct sched_domain *parent)
5118 {
5119         unsigned long cflags = sd->flags, pflags = parent->flags;
5120
5121         if (sd_degenerate(parent))
5122                 return 1;
5123
5124         if (!cpus_equal(sd->span, parent->span))
5125                 return 0;
5126
5127         /* Does parent contain flags not in child? */
5128         /* WAKE_BALANCE is a subset of WAKE_AFFINE */
5129         if (cflags & SD_WAKE_AFFINE)
5130                 pflags &= ~SD_WAKE_BALANCE;
5131         /* Flags needing groups don't count if only 1 group in parent */
5132         if (parent->groups == parent->groups->next) {
5133                 pflags &= ~(SD_LOAD_BALANCE |
5134                                 SD_BALANCE_NEWIDLE |
5135                                 SD_BALANCE_FORK |
5136                                 SD_BALANCE_EXEC);
5137         }
5138         if (~cflags & pflags)
5139                 return 0;
5140
5141         return 1;
5142 }
5143
5144 /*
5145  * Attach the domain 'sd' to 'cpu' as its base domain.  Callers must
5146  * hold the hotplug lock.
5147  */
5148 static void cpu_attach_domain(struct sched_domain *sd, int cpu)
5149 {
5150         runqueue_t *rq = cpu_rq(cpu);
5151         struct sched_domain *tmp;
5152
5153         /* Remove the sched domains which do not contribute to scheduling. */
5154         for (tmp = sd; tmp; tmp = tmp->parent) {
5155                 struct sched_domain *parent = tmp->parent;
5156                 if (!parent)
5157                         break;
5158                 if (sd_parent_degenerate(tmp, parent))
5159                         tmp->parent = parent->parent;
5160         }
5161
5162         if (sd && sd_degenerate(sd))
5163                 sd = sd->parent;
5164
5165         sched_domain_debug(sd, cpu);
5166
5167         rcu_assign_pointer(rq->sd, sd);
5168 }
5169
5170 /* cpus with isolated domains */
5171 static cpumask_t __devinitdata cpu_isolated_map = CPU_MASK_NONE;
5172
5173 /* Setup the mask of cpus configured for isolated domains */
5174 static int __init isolated_cpu_setup(char *str)
5175 {
5176         int ints[NR_CPUS], i;
5177
5178         str = get_options(str, ARRAY_SIZE(ints), ints);
5179         cpus_clear(cpu_isolated_map);
5180         for (i = 1; i <= ints[0]; i++)
5181                 if (ints[i] < NR_CPUS)
5182                         cpu_set(ints[i], cpu_isolated_map);
5183         return 1;
5184 }
5185
5186 __setup ("isolcpus=", isolated_cpu_setup);
5187
5188 /*
5189  * init_sched_build_groups takes an array of groups, the cpumask we wish
5190  * to span, and a pointer to a function which identifies what group a CPU
5191  * belongs to. The return value of group_fn must be a valid index into the
5192  * groups[] array, and must be >= 0 and < NR_CPUS (due to the fact that we
5193  * keep track of groups covered with a cpumask_t).
5194  *
5195  * init_sched_build_groups will build a circular linked list of the groups
5196  * covered by the given span, and will set each group's ->cpumask correctly,
5197  * and ->cpu_power to 0.
5198  */
5199 static void init_sched_build_groups(struct sched_group groups[], cpumask_t span,
5200                                     int (*group_fn)(int cpu))
5201 {
5202         struct sched_group *first = NULL, *last = NULL;
5203         cpumask_t covered = CPU_MASK_NONE;
5204         int i;
5205
5206         for_each_cpu_mask(i, span) {
5207                 int group = group_fn(i);
5208                 struct sched_group *sg = &groups[group];
5209                 int j;
5210
5211                 if (cpu_isset(i, covered))
5212                         continue;
5213
5214                 sg->cpumask = CPU_MASK_NONE;
5215                 sg->cpu_power = 0;
5216
5217                 for_each_cpu_mask(j, span) {
5218                         if (group_fn(j) != group)
5219                                 continue;
5220
5221                         cpu_set(j, covered);
5222                         cpu_set(j, sg->cpumask);
5223                 }
5224                 if (!first)
5225                         first = sg;
5226                 if (last)
5227                         last->next = sg;
5228                 last = sg;
5229         }
5230         last->next = first;
5231 }
5232
5233 #define SD_NODES_PER_DOMAIN 16
5234
5235 /*
5236  * Self-tuning task migration cost measurement between source and target CPUs.
5237  *
5238  * This is done by measuring the cost of manipulating buffers of varying
5239  * sizes. For a given buffer-size here are the steps that are taken:
5240  *
5241  * 1) the source CPU reads+dirties a shared buffer
5242  * 2) the target CPU reads+dirties the same shared buffer
5243  *
5244  * We measure how long they take, in the following 4 scenarios:
5245  *
5246  *  - source: CPU1, target: CPU2 | cost1
5247  *  - source: CPU2, target: CPU1 | cost2
5248  *  - source: CPU1, target: CPU1 | cost3
5249  *  - source: CPU2, target: CPU2 | cost4
5250  *
5251  * We then calculate the cost3+cost4-cost1-cost2 difference - this is
5252  * the cost of migration.
5253  *
5254  * We then start off from a small buffer-size and iterate up to larger
5255  * buffer sizes, in 5% steps - measuring each buffer-size separately, and
5256  * doing a maximum search for the cost. (The maximum cost for a migration
5257  * normally occurs when the working set size is around the effective cache
5258  * size.)
5259  */
5260 #define SEARCH_SCOPE            2
5261 #define MIN_CACHE_SIZE          (64*1024U)
5262 #define DEFAULT_CACHE_SIZE      (5*1024*1024U)
5263 #define ITERATIONS              1
5264 #define SIZE_THRESH             130
5265 #define COST_THRESH             130
5266
5267 /*
5268  * The migration cost is a function of 'domain distance'. Domain
5269  * distance is the number of steps a CPU has to iterate down its
5270  * domain tree to share a domain with the other CPU. The farther
5271  * two CPUs are from each other, the larger the distance gets.
5272  *
5273  * Note that we use the distance only to cache measurement results,
5274  * the distance value is not used numerically otherwise. When two
5275  * CPUs have the same distance it is assumed that the migration
5276  * cost is the same. (this is a simplification but quite practical)
5277  */
5278 #define MAX_DOMAIN_DISTANCE 32
5279
5280 static unsigned long long migration_cost[MAX_DOMAIN_DISTANCE] =
5281                 { [ 0 ... MAX_DOMAIN_DISTANCE-1 ] =
5282 /*
5283  * Architectures may override the migration cost and thus avoid
5284  * boot-time calibration. Unit is nanoseconds. Mostly useful for
5285  * virtualized hardware:
5286  */
5287 #ifdef CONFIG_DEFAULT_MIGRATION_COST
5288                         CONFIG_DEFAULT_MIGRATION_COST
5289 #else
5290                         -1LL
5291 #endif
5292 };
5293
5294 /*
5295  * Allow override of migration cost - in units of microseconds.
5296  * E.g. migration_cost=1000,2000,3000 will set up a level-1 cost
5297  * of 1 msec, level-2 cost of 2 msecs and level3 cost of 3 msecs:
5298  */
5299 static int __init migration_cost_setup(char *str)
5300 {
5301         int ints[MAX_DOMAIN_DISTANCE+1], i;
5302
5303         str = get_options(str, ARRAY_SIZE(ints), ints);
5304
5305         printk("#ints: %d\n", ints[0]);
5306         for (i = 1; i <= ints[0]; i++) {
5307                 migration_cost[i-1] = (unsigned long long)ints[i]*1000;
5308                 printk("migration_cost[%d]: %Ld\n", i-1, migration_cost[i-1]);
5309         }
5310         return 1;
5311 }
5312
5313 __setup ("migration_cost=", migration_cost_setup);
5314
5315 /*
5316  * Global multiplier (divisor) for migration-cutoff values,
5317  * in percentiles. E.g. use a value of 150 to get 1.5 times
5318  * longer cache-hot cutoff times.
5319  *
5320  * (We scale it from 100 to 128 to long long handling easier.)
5321  */
5322
5323 #define MIGRATION_FACTOR_SCALE 128
5324
5325 static unsigned int migration_factor = MIGRATION_FACTOR_SCALE;
5326
5327 static int __init setup_migration_factor(char *str)
5328 {
5329         get_option(&str, &migration_factor);
5330         migration_factor = migration_factor * MIGRATION_FACTOR_SCALE / 100;
5331         return 1;
5332 }
5333
5334 __setup("migration_factor=", setup_migration_factor);
5335
5336 /*
5337  * Estimated distance of two CPUs, measured via the number of domains
5338  * we have to pass for the two CPUs to be in the same span:
5339  */
5340 static unsigned long domain_distance(int cpu1, int cpu2)
5341 {
5342         unsigned long distance = 0;
5343         struct sched_domain *sd;
5344
5345         for_each_domain(cpu1, sd) {
5346                 WARN_ON(!cpu_isset(cpu1, sd->span));
5347                 if (cpu_isset(cpu2, sd->span))
5348                         return distance;
5349                 distance++;
5350         }
5351         if (distance >= MAX_DOMAIN_DISTANCE) {
5352                 WARN_ON(1);
5353                 distance = MAX_DOMAIN_DISTANCE-1;
5354         }
5355
5356         return distance;
5357 }
5358
5359 static unsigned int migration_debug;
5360
5361 static int __init setup_migration_debug(char *str)
5362 {
5363         get_option(&str, &migration_debug);
5364         return 1;
5365 }
5366
5367 __setup("migration_debug=", setup_migration_debug);
5368
5369 /*
5370  * Maximum cache-size that the scheduler should try to measure.
5371  * Architectures with larger caches should tune this up during
5372  * bootup. Gets used in the domain-setup code (i.e. during SMP
5373  * bootup).
5374  */
5375 unsigned int max_cache_size;
5376
5377 static int __init setup_max_cache_size(char *str)
5378 {
5379         get_option(&str, &max_cache_size);
5380         return 1;
5381 }
5382
5383 __setup("max_cache_size=", setup_max_cache_size);
5384
5385 /*
5386  * Dirty a big buffer in a hard-to-predict (for the L2 cache) way. This
5387  * is the operation that is timed, so we try to generate unpredictable
5388  * cachemisses that still end up filling the L2 cache:
5389  */
5390 static void touch_cache(void *__cache, unsigned long __size)
5391 {
5392         unsigned long size = __size/sizeof(long), chunk1 = size/3,
5393                         chunk2 = 2*size/3;
5394         unsigned long *cache = __cache;
5395         int i;
5396
5397         for (i = 0; i < size/6; i += 8) {
5398                 switch (i % 6) {
5399                         case 0: cache[i]++;
5400                         case 1: cache[size-1-i]++;
5401                         case 2: cache[chunk1-i]++;
5402                         case 3: cache[chunk1+i]++;
5403                         case 4: cache[chunk2-i]++;
5404                         case 5: cache[chunk2+i]++;
5405                 }
5406         }
5407 }
5408
5409 /*
5410  * Measure the cache-cost of one task migration. Returns in units of nsec.
5411  */
5412 static unsigned long long measure_one(void *cache, unsigned long size,
5413                                       int source, int target)
5414 {
5415         cpumask_t mask, saved_mask;
5416         unsigned long long t0, t1, t2, t3, cost;
5417
5418         saved_mask = current->cpus_allowed;
5419
5420         /*
5421          * Flush source caches to RAM and invalidate them:
5422          */
5423         sched_cacheflush();
5424
5425         /*
5426          * Migrate to the source CPU:
5427          */
5428         mask = cpumask_of_cpu(source);
5429         set_cpus_allowed(current, mask);
5430         WARN_ON(smp_processor_id() != source);
5431
5432         /*
5433          * Dirty the working set:
5434          */
5435         t0 = sched_clock();
5436         touch_cache(cache, size);
5437         t1 = sched_clock();
5438
5439         /*
5440          * Migrate to the target CPU, dirty the L2 cache and access
5441          * the shared buffer. (which represents the working set
5442          * of a migrated task.)
5443          */
5444         mask = cpumask_of_cpu(target);
5445         set_cpus_allowed(current, mask);
5446         WARN_ON(smp_processor_id() != target);
5447
5448         t2 = sched_clock();
5449         touch_cache(cache, size);
5450         t3 = sched_clock();
5451
5452         cost = t1-t0 + t3-t2;
5453
5454         if (migration_debug >= 2)
5455                 printk("[%d->%d]: %8Ld %8Ld %8Ld => %10Ld.\n",
5456                         source, target, t1-t0, t1-t0, t3-t2, cost);
5457         /*
5458          * Flush target caches to RAM and invalidate them:
5459          */
5460         sched_cacheflush();
5461
5462         set_cpus_allowed(current, saved_mask);
5463
5464         return cost;
5465 }
5466
5467 /*
5468  * Measure a series of task migrations and return the average
5469  * result. Since this code runs early during bootup the system
5470  * is 'undisturbed' and the average latency makes sense.
5471  *
5472  * The algorithm in essence auto-detects the relevant cache-size,
5473  * so it will properly detect different cachesizes for different
5474  * cache-hierarchies, depending on how the CPUs are connected.
5475  *
5476  * Architectures can prime the upper limit of the search range via
5477  * max_cache_size, otherwise the search range defaults to 20MB...64K.
5478  */
5479 static unsigned long long
5480 measure_cost(int cpu1, int cpu2, void *cache, unsigned int size)
5481 {
5482         unsigned long long cost1, cost2;
5483         int i;
5484
5485         /*
5486          * Measure the migration cost of 'size' bytes, over an
5487          * average of 10 runs:
5488          *
5489          * (We perturb the cache size by a small (0..4k)
5490          *  value to compensate size/alignment related artifacts.
5491          *  We also subtract the cost of the operation done on
5492          *  the same CPU.)
5493          */
5494         cost1 = 0;
5495
5496         /*
5497          * dry run, to make sure we start off cache-cold on cpu1,
5498          * and to get any vmalloc pagefaults in advance:
5499          */
5500         measure_one(cache, size, cpu1, cpu2);
5501         for (i = 0; i < ITERATIONS; i++)
5502                 cost1 += measure_one(cache, size - i*1024, cpu1, cpu2);
5503
5504         measure_one(cache, size, cpu2, cpu1);
5505         for (i = 0; i < ITERATIONS; i++)
5506                 cost1 += measure_one(cache, size - i*1024, cpu2, cpu1);
5507
5508         /*
5509          * (We measure the non-migrating [cached] cost on both
5510          *  cpu1 and cpu2, to handle CPUs with different speeds)
5511          */
5512         cost2 = 0;
5513
5514         measure_one(cache, size, cpu1, cpu1);
5515         for (i = 0; i < ITERATIONS; i++)
5516                 cost2 += measure_one(cache, size - i*1024, cpu1, cpu1);
5517
5518         measure_one(cache, size, cpu2, cpu2);
5519         for (i = 0; i < ITERATIONS; i++)
5520                 cost2 += measure_one(cache, size - i*1024, cpu2, cpu2);
5521
5522         /*
5523          * Get the per-iteration migration cost:
5524          */
5525         do_div(cost1, 2*ITERATIONS);
5526         do_div(cost2, 2*ITERATIONS);
5527
5528         return cost1 - cost2;
5529 }
5530
5531 static unsigned long long measure_migration_cost(int cpu1, int cpu2)
5532 {
5533         unsigned long long max_cost = 0, fluct = 0, avg_fluct = 0;
5534         unsigned int max_size, size, size_found = 0;
5535         long long cost = 0, prev_cost;
5536         void *cache;
5537
5538         /*
5539          * Search from max_cache_size*5 down to 64K - the real relevant
5540          * cachesize has to lie somewhere inbetween.
5541          */
5542         if (max_cache_size) {
5543                 max_size = max(max_cache_size * SEARCH_SCOPE, MIN_CACHE_SIZE);
5544                 size = max(max_cache_size / SEARCH_SCOPE, MIN_CACHE_SIZE);
5545         } else {
5546                 /*
5547                  * Since we have no estimation about the relevant
5548                  * search range
5549                  */
5550                 max_size = DEFAULT_CACHE_SIZE * SEARCH_SCOPE;
5551                 size = MIN_CACHE_SIZE;
5552         }
5553
5554         if (!cpu_online(cpu1) || !cpu_online(cpu2)) {
5555                 printk("cpu %d and %d not both online!\n", cpu1, cpu2);
5556                 return 0;
5557         }
5558
5559         /*
5560          * Allocate the working set:
5561          */
5562         cache = vmalloc(max_size);
5563         if (!cache) {
5564                 printk("could not vmalloc %d bytes for cache!\n", 2*max_size);
5565                 return 1000000; // return 1 msec on very small boxen
5566         }
5567
5568         while (size <= max_size) {
5569                 prev_cost = cost;
5570                 cost = measure_cost(cpu1, cpu2, cache, size);
5571
5572                 /*
5573                  * Update the max:
5574                  */
5575                 if (cost > 0) {
5576                         if (max_cost < cost) {
5577                                 max_cost = cost;
5578                                 size_found = size;
5579                         }
5580                 }
5581                 /*
5582                  * Calculate average fluctuation, we use this to prevent
5583                  * noise from triggering an early break out of the loop:
5584                  */
5585                 fluct = abs(cost - prev_cost);
5586                 avg_fluct = (avg_fluct + fluct)/2;
5587
5588                 if (migration_debug)
5589                         printk("-> [%d][%d][%7d] %3ld.%ld [%3ld.%ld] (%ld): (%8Ld %8Ld)\n",
5590                                 cpu1, cpu2, size,
5591                                 (long)cost / 1000000,
5592                                 ((long)cost / 100000) % 10,
5593                                 (long)max_cost / 1000000,
5594                                 ((long)max_cost / 100000) % 10,
5595                                 domain_distance(cpu1, cpu2),
5596                                 cost, avg_fluct);
5597
5598                 /*
5599                  * If we iterated at least 20% past the previous maximum,
5600                  * and the cost has dropped by more than 20% already,
5601                  * (taking fluctuations into account) then we assume to
5602                  * have found the maximum and break out of the loop early:
5603                  */
5604                 if (size_found && (size*100 > size_found*SIZE_THRESH))
5605                         if (cost+avg_fluct <= 0 ||
5606                                 max_cost*100 > (cost+avg_fluct)*COST_THRESH) {
5607
5608                                 if (migration_debug)
5609                                         printk("-> found max.\n");
5610                                 break;
5611                         }
5612                 /*
5613                  * Increase the cachesize in 10% steps:
5614                  */
5615                 size = size * 10 / 9;
5616         }
5617
5618         if (migration_debug)
5619                 printk("[%d][%d] working set size found: %d, cost: %Ld\n",
5620                         cpu1, cpu2, size_found, max_cost);
5621
5622         vfree(cache);
5623
5624         /*
5625          * A task is considered 'cache cold' if at least 2 times
5626          * the worst-case cost of migration has passed.
5627          *
5628          * (this limit is only listened to if the load-balancing
5629          * situation is 'nice' - if there is a large imbalance we
5630          * ignore it for the sake of CPU utilization and
5631          * processing fairness.)
5632          */
5633         return 2 * max_cost * migration_factor / MIGRATION_FACTOR_SCALE;
5634 }
5635
5636 static void calibrate_migration_costs(const cpumask_t *cpu_map)
5637 {
5638         int cpu1 = -1, cpu2 = -1, cpu, orig_cpu = raw_smp_processor_id();
5639         unsigned long j0, j1, distance, max_distance = 0;
5640         struct sched_domain *sd;
5641
5642         j0 = jiffies;
5643
5644         /*
5645          * First pass - calculate the cacheflush times:
5646          */
5647         for_each_cpu_mask(cpu1, *cpu_map) {
5648                 for_each_cpu_mask(cpu2, *cpu_map) {
5649                         if (cpu1 == cpu2)
5650                                 continue;
5651                         distance = domain_distance(cpu1, cpu2);
5652                         max_distance = max(max_distance, distance);
5653                         /*
5654                          * No result cached yet?
5655                          */
5656                         if (migration_cost[distance] == -1LL)
5657                                 migration_cost[distance] =
5658                                         measure_migration_cost(cpu1, cpu2);
5659                 }
5660         }
5661         /*
5662          * Second pass - update the sched domain hierarchy with
5663          * the new cache-hot-time estimations:
5664          */
5665         for_each_cpu_mask(cpu, *cpu_map) {
5666                 distance = 0;
5667                 for_each_domain(cpu, sd) {
5668                         sd->cache_hot_time = migration_cost[distance];
5669                         distance++;
5670                 }
5671         }
5672         /*
5673          * Print the matrix:
5674          */
5675         if (migration_debug)
5676                 printk("migration: max_cache_size: %d, cpu: %d MHz:\n",
5677                         max_cache_size,
5678 #ifdef CONFIG_X86
5679                         cpu_khz/1000
5680 #else
5681                         -1
5682 #endif
5683                 );
5684         if (system_state == SYSTEM_BOOTING) {
5685                 printk("migration_cost=");
5686                 for (distance = 0; distance <= max_distance; distance++) {
5687                         if (distance)
5688                                 printk(",");
5689                         printk("%ld", (long)migration_cost[distance] / 1000);
5690                 }
5691                 printk("\n");
5692         }
5693         j1 = jiffies;
5694         if (migration_debug)
5695                 printk("migration: %ld seconds\n", (j1-j0)/HZ);
5696
5697         /*
5698          * Move back to the original CPU. NUMA-Q gets confused
5699          * if we migrate to another quad during bootup.
5700          */
5701         if (raw_smp_processor_id() != orig_cpu) {
5702                 cpumask_t mask = cpumask_of_cpu(orig_cpu),
5703                         saved_mask = current->cpus_allowed;
5704
5705                 set_cpus_allowed(current, mask);
5706                 set_cpus_allowed(current, saved_mask);
5707         }
5708 }
5709
5710 #ifdef CONFIG_NUMA
5711
5712 /**
5713  * find_next_best_node - find the next node to include in a sched_domain
5714  * @node: node whose sched_domain we're building
5715  * @used_nodes: nodes already in the sched_domain
5716  *
5717  * Find the next node to include in a given scheduling domain.  Simply
5718  * finds the closest node not already in the @used_nodes map.
5719  *
5720  * Should use nodemask_t.
5721  */
5722 static int find_next_best_node(int node, unsigned long *used_nodes)
5723 {
5724         int i, n, val, min_val, best_node = 0;
5725
5726         min_val = INT_MAX;
5727
5728         for (i = 0; i < MAX_NUMNODES; i++) {
5729                 /* Start at @node */
5730                 n = (node + i) % MAX_NUMNODES;
5731
5732                 if (!nr_cpus_node(n))
5733                         continue;
5734
5735                 /* Skip already used nodes */
5736                 if (test_bit(n, used_nodes))
5737                         continue;
5738
5739                 /* Simple min distance search */
5740                 val = node_distance(node, n);
5741
5742                 if (val < min_val) {
5743                         min_val = val;
5744                         best_node = n;
5745                 }
5746         }
5747
5748         set_bit(best_node, used_nodes);
5749         return best_node;
5750 }
5751
5752 /**
5753  * sched_domain_node_span - get a cpumask for a node's sched_domain
5754  * @node: node whose cpumask we're constructing
5755  * @size: number of nodes to include in this span
5756  *
5757  * Given a node, construct a good cpumask for its sched_domain to span.  It
5758  * should be one that prevents unnecessary balancing, but also spreads tasks
5759  * out optimally.
5760  */
5761 static cpumask_t sched_domain_node_span(int node)
5762 {
5763         int i;
5764         cpumask_t span, nodemask;
5765         DECLARE_BITMAP(used_nodes, MAX_NUMNODES);
5766
5767         cpus_clear(span);
5768         bitmap_zero(used_nodes, MAX_NUMNODES);
5769
5770         nodemask = node_to_cpumask(node);
5771         cpus_or(span, span, nodemask);
5772         set_bit(node, used_nodes);
5773
5774         for (i = 1; i < SD_NODES_PER_DOMAIN; i++) {
5775                 int next_node = find_next_best_node(node, used_nodes);
5776                 nodemask = node_to_cpumask(next_node);
5777                 cpus_or(span, span, nodemask);
5778         }
5779
5780         return span;
5781 }
5782 #endif
5783
5784 /*
5785  * At the moment, CONFIG_SCHED_SMT is never defined, but leave it in so we
5786  * can switch it on easily if needed.
5787  */
5788 #ifdef CONFIG_SCHED_SMT
5789 static DEFINE_PER_CPU(struct sched_domain, cpu_domains);
5790 static struct sched_group sched_group_cpus[NR_CPUS];
5791 static int cpu_to_cpu_group(int cpu)
5792 {
5793         return cpu;
5794 }
5795 #endif
5796
5797 static DEFINE_PER_CPU(struct sched_domain, phys_domains);
5798 static struct sched_group sched_group_phys[NR_CPUS];
5799 static int cpu_to_phys_group(int cpu)
5800 {
5801 #ifdef CONFIG_SCHED_SMT
5802         return first_cpu(cpu_sibling_map[cpu]);
5803 #else
5804         return cpu;
5805 #endif
5806 }
5807
5808 #ifdef CONFIG_NUMA
5809 /*
5810  * The init_sched_build_groups can't handle what we want to do with node
5811  * groups, so roll our own. Now each node has its own list of groups which
5812  * gets dynamically allocated.
5813  */
5814 static DEFINE_PER_CPU(struct sched_domain, node_domains);
5815 static struct sched_group **sched_group_nodes_bycpu[NR_CPUS];
5816
5817 static DEFINE_PER_CPU(struct sched_domain, allnodes_domains);
5818 static struct sched_group *sched_group_allnodes_bycpu[NR_CPUS];
5819
5820 static int cpu_to_allnodes_group(int cpu)
5821 {
5822         return cpu_to_node(cpu);
5823 }
5824 #endif
5825
5826 /*
5827  * Build sched domains for a given set of cpus and attach the sched domains
5828  * to the individual cpus
5829  */
5830 void build_sched_domains(const cpumask_t *cpu_map)
5831 {
5832         int i;
5833 #ifdef CONFIG_NUMA
5834         struct sched_group **sched_group_nodes = NULL;
5835         struct sched_group *sched_group_allnodes = NULL;
5836
5837         /*
5838          * Allocate the per-node list of sched groups
5839          */
5840         sched_group_nodes = kmalloc(sizeof(struct sched_group*)*MAX_NUMNODES,
5841                                            GFP_ATOMIC);
5842         if (!sched_group_nodes) {
5843                 printk(KERN_WARNING "Can not alloc sched group node list\n");
5844                 return;
5845         }
5846         sched_group_nodes_bycpu[first_cpu(*cpu_map)] = sched_group_nodes;
5847 #endif
5848
5849         /*
5850          * Set up domains for cpus specified by the cpu_map.
5851          */
5852         for_each_cpu_mask(i, *cpu_map) {
5853                 int group;
5854                 struct sched_domain *sd = NULL, *p;
5855                 cpumask_t nodemask = node_to_cpumask(cpu_to_node(i));
5856
5857                 cpus_and(nodemask, nodemask, *cpu_map);
5858
5859 #ifdef CONFIG_NUMA
5860                 if (cpus_weight(*cpu_map)
5861                                 > SD_NODES_PER_DOMAIN*cpus_weight(nodemask)) {
5862                         if (!sched_group_allnodes) {
5863                                 sched_group_allnodes
5864                                         = kmalloc(sizeof(struct sched_group)
5865                                                         * MAX_NUMNODES,
5866                                                   GFP_KERNEL);
5867                                 if (!sched_group_allnodes) {
5868                                         printk(KERN_WARNING
5869                                         "Can not alloc allnodes sched group\n");
5870                                         break;
5871                                 }
5872                                 sched_group_allnodes_bycpu[i]
5873                                                 = sched_group_allnodes;
5874                         }
5875                         sd = &per_cpu(allnodes_domains, i);
5876                         *sd = SD_ALLNODES_INIT;
5877                         sd->span = *cpu_map;
5878                         group = cpu_to_allnodes_group(i);
5879                         sd->groups = &sched_group_allnodes[group];
5880                         p = sd;
5881                 } else
5882                         p = NULL;
5883
5884                 sd = &per_cpu(node_domains, i);
5885                 *sd = SD_NODE_INIT;
5886                 sd->span = sched_domain_node_span(cpu_to_node(i));
5887                 sd->parent = p;
5888                 cpus_and(sd->span, sd->span, *cpu_map);
5889 #endif
5890
5891                 p = sd;
5892                 sd = &per_cpu(phys_domains, i);
5893                 group = cpu_to_phys_group(i);
5894                 *sd = SD_CPU_INIT;
5895                 sd->span = nodemask;
5896                 sd->parent = p;
5897                 sd->groups = &sched_group_phys[group];
5898
5899 #ifdef CONFIG_SCHED_SMT
5900                 p = sd;
5901                 sd = &per_cpu(cpu_domains, i);
5902                 group = cpu_to_cpu_group(i);
5903                 *sd = SD_SIBLING_INIT;
5904                 sd->span = cpu_sibling_map[i];
5905                 cpus_and(sd->span, sd->span, *cpu_map);
5906                 sd->parent = p;
5907                 sd->groups = &sched_group_cpus[group];
5908 #endif
5909         }
5910
5911 #ifdef CONFIG_SCHED_SMT
5912         /* Set up CPU (sibling) groups */
5913         for_each_cpu_mask(i, *cpu_map) {
5914                 cpumask_t this_sibling_map = cpu_sibling_map[i];
5915                 cpus_and(this_sibling_map, this_sibling_map, *cpu_map);
5916                 if (i != first_cpu(this_sibling_map))
5917                         continue;
5918
5919                 init_sched_build_groups(sched_group_cpus, this_sibling_map,
5920                                                 &cpu_to_cpu_group);
5921         }
5922 #endif
5923
5924         /* Set up physical groups */
5925         for (i = 0; i < MAX_NUMNODES; i++) {
5926                 cpumask_t nodemask = node_to_cpumask(i);
5927
5928                 cpus_and(nodemask, nodemask, *cpu_map);
5929                 if (cpus_empty(nodemask))
5930                         continue;
5931
5932                 init_sched_build_groups(sched_group_phys, nodemask,
5933                                                 &cpu_to_phys_group);
5934         }
5935
5936 #ifdef CONFIG_NUMA
5937         /* Set up node groups */
5938         if (sched_group_allnodes)
5939                 init_sched_build_groups(sched_group_allnodes, *cpu_map,
5940                                         &cpu_to_allnodes_group);
5941
5942         for (i = 0; i < MAX_NUMNODES; i++) {
5943                 /* Set up node groups */
5944                 struct sched_group *sg, *prev;
5945                 cpumask_t nodemask = node_to_cpumask(i);
5946                 cpumask_t domainspan;
5947                 cpumask_t covered = CPU_MASK_NONE;
5948                 int j;
5949
5950                 cpus_and(nodemask, nodemask, *cpu_map);
5951                 if (cpus_empty(nodemask)) {
5952                         sched_group_nodes[i] = NULL;
5953                         continue;
5954                 }
5955
5956                 domainspan = sched_domain_node_span(i);
5957                 cpus_and(domainspan, domainspan, *cpu_map);
5958
5959                 sg = kmalloc(sizeof(struct sched_group), GFP_KERNEL);
5960                 sched_group_nodes[i] = sg;
5961                 for_each_cpu_mask(j, nodemask) {
5962                         struct sched_domain *sd;
5963                         sd = &per_cpu(node_domains, j);
5964                         sd->groups = sg;
5965                         if (sd->groups == NULL) {
5966                                 /* Turn off balancing if we have no groups */
5967                                 sd->flags = 0;
5968                         }
5969                 }
5970                 if (!sg) {
5971                         printk(KERN_WARNING
5972                         "Can not alloc domain group for node %d\n", i);
5973                         continue;
5974                 }
5975                 sg->cpu_power = 0;
5976                 sg->cpumask = nodemask;
5977                 cpus_or(covered, covered, nodemask);
5978                 prev = sg;
5979
5980                 for (j = 0; j < MAX_NUMNODES; j++) {
5981                         cpumask_t tmp, notcovered;
5982                         int n = (i + j) % MAX_NUMNODES;
5983
5984                         cpus_complement(notcovered, covered);
5985                         cpus_and(tmp, notcovered, *cpu_map);
5986                         cpus_and(tmp, tmp, domainspan);
5987                         if (cpus_empty(tmp))
5988                                 break;
5989
5990                         nodemask = node_to_cpumask(n);
5991                         cpus_and(tmp, tmp, nodemask);
5992                         if (cpus_empty(tmp))
5993                                 continue;
5994
5995                         sg = kmalloc(sizeof(struct sched_group), GFP_KERNEL);
5996                         if (!sg) {
5997                                 printk(KERN_WARNING
5998                                 "Can not alloc domain group for node %d\n", j);
5999                                 break;
6000                         }
6001                         sg->cpu_power = 0;
6002                         sg->cpumask = tmp;
6003                         cpus_or(covered, covered, tmp);
6004                         prev->next = sg;
6005                         prev = sg;
6006                 }
6007                 prev->next = sched_group_nodes[i];
6008         }
6009 #endif
6010
6011         /* Calculate CPU power for physical packages and nodes */
6012         for_each_cpu_mask(i, *cpu_map) {
6013                 int power;
6014                 struct sched_domain *sd;
6015 #ifdef CONFIG_SCHED_SMT
6016                 sd = &per_cpu(cpu_domains, i);
6017                 power = SCHED_LOAD_SCALE;
6018                 sd->groups->cpu_power = power;
6019 #endif
6020
6021                 sd = &per_cpu(phys_domains, i);
6022                 power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE *
6023                                 (cpus_weight(sd->groups->cpumask)-1) / 10;
6024                 sd->groups->cpu_power = power;
6025
6026 #ifdef CONFIG_NUMA
6027                 sd = &per_cpu(allnodes_domains, i);
6028                 if (sd->groups) {
6029                         power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE *
6030                                 (cpus_weight(sd->groups->cpumask)-1) / 10;
6031                         sd->groups->cpu_power = power;
6032                 }
6033 #endif
6034         }
6035
6036 #ifdef CONFIG_NUMA
6037         for (i = 0; i < MAX_NUMNODES; i++) {
6038                 struct sched_group *sg = sched_group_nodes[i];
6039                 int j;
6040
6041                 if (sg == NULL)
6042                         continue;
6043 next_sg:
6044                 for_each_cpu_mask(j, sg->cpumask) {
6045                         struct sched_domain *sd;
6046                         int power;
6047
6048                         sd = &per_cpu(phys_domains, j);
6049                         if (j != first_cpu(sd->groups->cpumask)) {
6050                                 /*
6051                                  * Only add "power" once for each
6052                                  * physical package.
6053                                  */
6054                                 continue;
6055                         }
6056                         power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE *
6057                                 (cpus_weight(sd->groups->cpumask)-1) / 10;
6058
6059                         sg->cpu_power += power;
6060                 }
6061                 sg = sg->next;
6062                 if (sg != sched_group_nodes[i])
6063                         goto next_sg;
6064         }
6065 #endif
6066
6067         /* Attach the domains */
6068         for_each_cpu_mask(i, *cpu_map) {
6069                 struct sched_domain *sd;
6070 #ifdef CONFIG_SCHED_SMT
6071                 sd = &per_cpu(cpu_domains, i);
6072 #else
6073                 sd = &per_cpu(phys_domains, i);
6074 #endif
6075                 cpu_attach_domain(sd, i);
6076         }
6077         /*
6078          * Tune cache-hot values:
6079          */
6080         calibrate_migration_costs(cpu_map);
6081 }
6082 /*
6083  * Set up scheduler domains and groups.  Callers must hold the hotplug lock.
6084  */
6085 static void arch_init_sched_domains(const cpumask_t *cpu_map)
6086 {
6087         cpumask_t cpu_default_map;
6088
6089         /*
6090          * Setup mask for cpus without special case scheduling requirements.
6091          * For now this just excludes isolated cpus, but could be used to
6092          * exclude other special cases in the future.
6093          */
6094         cpus_andnot(cpu_default_map, *cpu_map, cpu_isolated_map);
6095
6096         build_sched_domains(&cpu_default_map);
6097 }
6098
6099 static void arch_destroy_sched_domains(const cpumask_t *cpu_map)
6100 {
6101 #ifdef CONFIG_NUMA
6102         int i;
6103         int cpu;
6104
6105         for_each_cpu_mask(cpu, *cpu_map) {
6106                 struct sched_group *sched_group_allnodes
6107                         = sched_group_allnodes_bycpu[cpu];
6108                 struct sched_group **sched_group_nodes
6109                         = sched_group_nodes_bycpu[cpu];
6110
6111                 if (sched_group_allnodes) {
6112                         kfree(sched_group_allnodes);
6113                         sched_group_allnodes_bycpu[cpu] = NULL;
6114                 }
6115
6116                 if (!sched_group_nodes)
6117                         continue;
6118
6119                 for (i = 0; i < MAX_NUMNODES; i++) {
6120                         cpumask_t nodemask = node_to_cpumask(i);
6121                         struct sched_group *oldsg, *sg = sched_group_nodes[i];
6122
6123                         cpus_and(nodemask, nodemask, *cpu_map);
6124                         if (cpus_empty(nodemask))
6125                                 continue;
6126
6127                         if (sg == NULL)
6128                                 continue;
6129                         sg = sg->next;
6130 next_sg:
6131                         oldsg = sg;
6132                         sg = sg->next;
6133                         kfree(oldsg);
6134                         if (oldsg != sched_group_nodes[i])
6135                                 goto next_sg;
6136                 }
6137                 kfree(sched_group_nodes);
6138                 sched_group_nodes_bycpu[cpu] = NULL;
6139         }
6140 #endif
6141 }
6142
6143 /*
6144  * Detach sched domains from a group of cpus specified in cpu_map
6145  * These cpus will now be attached to the NULL domain
6146  */
6147 static void detach_destroy_domains(const cpumask_t *cpu_map)
6148 {
6149         int i;
6150
6151         for_each_cpu_mask(i, *cpu_map)
6152                 cpu_attach_domain(NULL, i);
6153         synchronize_sched();
6154         arch_destroy_sched_domains(cpu_map);
6155 }
6156
6157 /*
6158  * Partition sched domains as specified by the cpumasks below.
6159  * This attaches all cpus from the cpumasks to the NULL domain,
6160  * waits for a RCU quiescent period, recalculates sched
6161  * domain information and then attaches them back to the
6162  * correct sched domains
6163  * Call with hotplug lock held
6164  */
6165 void partition_sched_domains(cpumask_t *partition1, cpumask_t *partition2)
6166 {
6167         cpumask_t change_map;
6168
6169         cpus_and(*partition1, *partition1, cpu_online_map);
6170         cpus_and(*partition2, *partition2, cpu_online_map);
6171         cpus_or(change_map, *partition1, *partition2);
6172
6173         /* Detach sched domains from all of the affected cpus */
6174         detach_destroy_domains(&change_map);
6175         if (!cpus_empty(*partition1))
6176                 build_sched_domains(partition1);
6177         if (!cpus_empty(*partition2))
6178                 build_sched_domains(partition2);
6179 }
6180
6181 #ifdef CONFIG_HOTPLUG_CPU
6182 /*
6183  * Force a reinitialization of the sched domains hierarchy.  The domains
6184  * and groups cannot be updated in place without racing with the balancing
6185  * code, so we temporarily attach all running cpus to the NULL domain
6186  * which will prevent rebalancing while the sched domains are recalculated.
6187  */
6188 static int update_sched_domains(struct notifier_block *nfb,
6189                                 unsigned long action, void *hcpu)
6190 {
6191         switch (action) {
6192         case CPU_UP_PREPARE:
6193         case CPU_DOWN_PREPARE:
6194                 detach_destroy_domains(&cpu_online_map);
6195                 return NOTIFY_OK;
6196
6197         case CPU_UP_CANCELED:
6198         case CPU_DOWN_FAILED:
6199         case CPU_ONLINE:
6200         case CPU_DEAD:
6201                 /*
6202                  * Fall through and re-initialise the domains.
6203                  */
6204                 break;
6205         default:
6206                 return NOTIFY_DONE;
6207         }
6208
6209         /* The hotplug lock is already held by cpu_up/cpu_down */
6210         arch_init_sched_domains(&cpu_online_map);
6211
6212         return NOTIFY_OK;
6213 }
6214 #endif
6215
6216 void __init sched_init_smp(void)
6217 {
6218         lock_cpu_hotplug();
6219         arch_init_sched_domains(&cpu_online_map);
6220         unlock_cpu_hotplug();
6221         /* XXX: Theoretical race here - CPU may be hotplugged now */
6222         hotcpu_notifier(update_sched_domains, 0);
6223 }
6224 #else
6225 void __init sched_init_smp(void)
6226 {
6227 }
6228 #endif /* CONFIG_SMP */
6229
6230 int in_sched_functions(unsigned long addr)
6231 {
6232         /* Linker adds these: start and end of __sched functions */
6233         extern char __sched_text_start[], __sched_text_end[];
6234         return in_lock_functions(addr) ||
6235                 (addr >= (unsigned long)__sched_text_start
6236                 && addr < (unsigned long)__sched_text_end);
6237 }
6238
6239 void __init sched_init(void)
6240 {
6241         runqueue_t *rq;
6242         int i, j, k;
6243
6244         for_each_cpu(i) {
6245                 prio_array_t *array;
6246
6247                 rq = cpu_rq(i);
6248                 spin_lock_init(&rq->lock);
6249                 rq->nr_running = 0;
6250                 rq->active = rq->arrays;
6251                 rq->expired = rq->arrays + 1;
6252                 rq->best_expired_prio = MAX_PRIO;
6253
6254 #ifdef CONFIG_SMP
6255                 rq->sd = NULL;
6256                 for (j = 1; j < 3; j++)
6257                         rq->cpu_load[j] = 0;
6258                 rq->active_balance = 0;
6259                 rq->push_cpu = 0;
6260                 rq->cpu = i;
6261                 rq->migration_thread = NULL;
6262                 INIT_LIST_HEAD(&rq->migration_queue);
6263                 rq->cpu = i;
6264 #endif
6265                 atomic_set(&rq->nr_iowait, 0);
6266 #ifdef CONFIG_VSERVER_HARDCPU
6267                 INIT_LIST_HEAD(&rq->hold_queue);
6268 #endif
6269
6270                 for (j = 0; j < 2; j++) {
6271                         array = rq->arrays + j;
6272                         for (k = 0; k < MAX_PRIO; k++) {
6273                                 INIT_LIST_HEAD(array->queue + k);
6274                                 __clear_bit(k, array->bitmap);
6275                         }
6276                         // delimiter for bitsearch
6277                         __set_bit(MAX_PRIO, array->bitmap);
6278                 }
6279         }
6280
6281         /*
6282          * The boot idle thread does lazy MMU switching as well:
6283          */
6284         atomic_inc(&init_mm.mm_count);
6285         enter_lazy_tlb(&init_mm, current);
6286
6287         /*
6288          * Make us the idle thread. Technically, schedule() should not be
6289          * called from this thread, however somewhere below it might be,
6290          * but because we are the idle thread, we just pick up running again
6291          * when this runqueue becomes "idle".
6292          */
6293         init_idle(current, smp_processor_id());
6294 }
6295
6296 #ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
6297 void __might_sleep(char *file, int line)
6298 {
6299 #if defined(in_atomic)
6300         static unsigned long prev_jiffy;        /* ratelimiting */
6301
6302         if ((in_atomic() || irqs_disabled()) &&
6303             system_state == SYSTEM_RUNNING && !oops_in_progress) {
6304                 if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
6305                         return;
6306                 prev_jiffy = jiffies;
6307                 printk(KERN_ERR "Debug: sleeping function called from invalid"
6308                                 " context at %s:%d\n", file, line);
6309                 printk("in_atomic():%d, irqs_disabled():%d\n",
6310                         in_atomic(), irqs_disabled());
6311                 dump_stack();
6312         }
6313 #endif
6314 }
6315 EXPORT_SYMBOL(__might_sleep);
6316 #endif
6317
6318 #ifdef CONFIG_MAGIC_SYSRQ
6319 void normalize_rt_tasks(void)
6320 {
6321         struct task_struct *p;
6322         prio_array_t *array;
6323         unsigned long flags;
6324         runqueue_t *rq;
6325
6326         read_lock_irq(&tasklist_lock);
6327         for_each_process (p) {
6328                 if (!rt_task(p))
6329                         continue;
6330
6331                 rq = task_rq_lock(p, &flags);
6332
6333                 array = p->array;
6334                 if (array)
6335                         deactivate_task(p, task_rq(p));
6336                 __setscheduler(p, SCHED_NORMAL, 0);
6337                 if (array) {
6338                         vx_activate_task(p);
6339                         __activate_task(p, task_rq(p));
6340                         resched_task(rq->curr);
6341                 }
6342
6343                 task_rq_unlock(rq, &flags);
6344         }
6345         read_unlock_irq(&tasklist_lock);
6346 }
6347
6348 #endif /* CONFIG_MAGIC_SYSRQ */
6349
6350 #ifdef CONFIG_IA64
6351 /*
6352  * These functions are only useful for the IA64 MCA handling.
6353  *
6354  * They can only be called when the whole system has been
6355  * stopped - every CPU needs to be quiescent, and no scheduling
6356  * activity can take place. Using them for anything else would
6357  * be a serious bug, and as a result, they aren't even visible
6358  * under any other configuration.
6359  */
6360
6361 /**
6362  * curr_task - return the current task for a given cpu.
6363  * @cpu: the processor in question.
6364  *
6365  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
6366  */
6367 task_t *curr_task(int cpu)
6368 {
6369         return cpu_curr(cpu);
6370 }
6371
6372 /**
6373  * set_curr_task - set the current task for a given cpu.
6374  * @cpu: the processor in question.
6375  * @p: the task pointer to set.
6376  *
6377  * Description: This function must only be used when non-maskable interrupts
6378  * are serviced on a separate stack.  It allows the architecture to switch the
6379  * notion of the current task on a cpu in a non-blocking manner.  This function
6380  * must be called with all CPU's synchronized, and interrupts disabled, the
6381  * and caller must save the original value of the current task (see
6382  * curr_task() above) and restore that value before reenabling interrupts and
6383  * re-starting the system.
6384  *
6385  * ONLY VALID WHEN THE WHOLE SYSTEM IS STOPPED!
6386  */
6387 void set_curr_task(int cpu, task_t *p)
6388 {
6389         cpu_curr(cpu) = p;
6390 }
6391
6392 #endif