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