linux/kernel/sched.c
<<
>>
Prefs
   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/completion.h>
  31#include <linux/kernel_stat.h>
  32#include <linux/security.h>
  33#include <linux/notifier.h>
  34#include <linux/profile.h>
  35#include <linux/suspend.h>
  36#include <linux/blkdev.h>
  37#include <linux/delay.h>
  38#include <linux/smp.h>
  39#include <linux/threads.h>
  40#include <linux/timer.h>
  41#include <linux/rcupdate.h>
  42#include <linux/cpu.h>
  43#include <linux/cpuset.h>
  44#include <linux/percpu.h>
  45#include <linux/kthread.h>
  46#include <linux/seq_file.h>
  47#include <linux/syscalls.h>
  48#include <linux/times.h>
  49#include <linux/acct.h>
  50#include <asm/tlb.h>
  51
  52#include <asm/unistd.h>
  53
  54/*
  55 * Convert user-nice values [ -20 ... 0 ... 19 ]
  56 * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
  57 * and back.
  58 */
  59#define NICE_TO_PRIO(nice)      (MAX_RT_PRIO + (nice) + 20)
  60#define PRIO_TO_NICE(prio)      ((prio) - MAX_RT_PRIO - 20)
  61#define TASK_NICE(p)            PRIO_TO_NICE((p)->static_prio)
  62
  63/*
  64 * 'User priority' is the nice value converted to something we
  65 * can work with better when scaling various scheduler parameters,
  66 * it's a [ 0 ... 39 ] range.
  67 */
  68#define USER_PRIO(p)            ((p)-MAX_RT_PRIO)
  69#define TASK_USER_PRIO(p)       USER_PRIO((p)->static_prio)
  70#define MAX_USER_PRIO           (USER_PRIO(MAX_PRIO))
  71
  72/*
  73 * Some helpers for converting nanosecond timing to jiffy resolution
  74 */
  75#define NS_TO_JIFFIES(TIME)     ((TIME) / (1000000000 / HZ))
  76#define JIFFIES_TO_NS(TIME)     ((TIME) * (1000000000 / HZ))
  77
  78/*
  79 * These are the 'tuning knobs' of the scheduler:
  80 *
  81 * Minimum timeslice is 5 msecs (or 1 jiffy, whichever is larger),
  82 * default timeslice is 100 msecs, maximum timeslice is 800 msecs.
  83 * Timeslices get refilled after they expire.
  84 */
  85#define MIN_TIMESLICE           max(5 * HZ / 1000, 1)
  86#define DEF_TIMESLICE           (100 * HZ / 1000)
  87#define ON_RUNQUEUE_WEIGHT       30
  88#define CHILD_PENALTY            95
  89#define PARENT_PENALTY          100
  90#define EXIT_WEIGHT               3
  91#define PRIO_BONUS_RATIO         25
  92#define MAX_BONUS               (MAX_USER_PRIO * PRIO_BONUS_RATIO / 100)
  93#define INTERACTIVE_DELTA         2
  94#define MAX_SLEEP_AVG           (DEF_TIMESLICE * MAX_BONUS)
  95#define STARVATION_LIMIT        (MAX_SLEEP_AVG)
  96#define NS_MAX_SLEEP_AVG        (JIFFIES_TO_NS(MAX_SLEEP_AVG))
  97
  98/*
  99 * If a task is 'interactive' then we reinsert it in the active
 100 * array after it has expired its current timeslice. (it will not
 101 * continue to run immediately, it will still roundrobin with
 102 * other interactive tasks.)
 103 *
 104 * This part scales the interactivity limit depending on niceness.
 105 *
 106 * We scale it linearly, offset by the INTERACTIVE_DELTA delta.
 107 * Here are a few examples of different nice levels:
 108 *
 109 *  TASK_INTERACTIVE(-20): [1,1,1,1,1,1,1,1,1,0,0]
 110 *  TASK_INTERACTIVE(-10): [1,1,1,1,1,1,1,0,0,0,0]
 111 *  TASK_INTERACTIVE(  0): [1,1,1,1,0,0,0,0,0,0,0]
 112 *  TASK_INTERACTIVE( 10): [1,1,0,0,0,0,0,0,0,0,0]
 113 *  TASK_INTERACTIVE( 19): [0,0,0,0,0,0,0,0,0,0,0]
 114 *
 115 * (the X axis represents the possible -5 ... 0 ... +5 dynamic
 116 *  priority range a task can explore, a value of '1' means the
 117 *  task is rated interactive.)
 118 *
 119 * Ie. nice +19 tasks can never get 'interactive' enough to be
 120 * reinserted into the active array. And only heavily CPU-hog nice -20
 121 * tasks will be expired. Default nice 0 tasks are somewhere between,
 122 * it takes some effort for them to get interactive, but it's not
 123 * too hard.
 124 */
 125
 126#define CURRENT_BONUS(p) \
 127        (NS_TO_JIFFIES((p)->sleep_avg) * MAX_BONUS / \
 128                MAX_SLEEP_AVG)
 129
 130#define GRANULARITY     (10 * HZ / 1000 ? : 1)
 131
 132#ifdef CONFIG_SMP
 133#define TIMESLICE_GRANULARITY(p)        (GRANULARITY * \
 134                (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)) * \
 135                        num_online_cpus())
 136#else
 137#define TIMESLICE_GRANULARITY(p)        (GRANULARITY * \
 138                (1 << (((MAX_BONUS - CURRENT_BONUS(p)) ? : 1) - 1)))
 139#endif
 140
 141#define SCALE(v1,v1_max,v2_max) \
 142        (v1) * (v2_max) / (v1_max)
 143
 144#define DELTA(p) \
 145        (SCALE(TASK_NICE(p), 40, MAX_BONUS) + INTERACTIVE_DELTA)
 146
 147#define TASK_INTERACTIVE(p) \
 148        ((p)->prio <= (p)->static_prio - DELTA(p))
 149
 150#define INTERACTIVE_SLEEP(p) \
 151        (JIFFIES_TO_NS(MAX_SLEEP_AVG * \
 152                (MAX_BONUS / 2 + DELTA((p)) + 1) / MAX_BONUS - 1))
 153
 154#define TASK_PREEMPTS_CURR(p, rq) \
 155        ((p)->prio < (rq)->curr->prio)
 156
 157/*
 158 * task_timeslice() scales user-nice values [ -20 ... 0 ... 19 ]
 159 * to time slice values: [800ms ... 100ms ... 5ms]
 160 *
 161 * The higher a thread's priority, the bigger timeslices
 162 * it gets during one round of execution. But even the lowest
 163 * priority thread gets MIN_TIMESLICE worth of execution time.
 164 */
 165
 166#define SCALE_PRIO(x, prio) \
 167        max(x * (MAX_PRIO - prio) / (MAX_USER_PRIO/2), MIN_TIMESLICE)
 168
 169static inline unsigned int task_timeslice(task_t *p)
 170{
 171        if (p->static_prio < NICE_TO_PRIO(0))
 172                return SCALE_PRIO(DEF_TIMESLICE*4, p->static_prio);
 173        else
 174                return SCALE_PRIO(DEF_TIMESLICE, p->static_prio);
 175}
 176#define task_hot(p, now, sd) ((long long) ((now) - (p)->last_ran)       \
 177                                < (long long) (sd)->cache_hot_time)
 178
 179/*
 180 * These are the runqueue data structures:
 181 */
 182
 183#define BITMAP_SIZE ((((MAX_PRIO+1+7)/8)+sizeof(long)-1)/sizeof(long))
 184
 185typedef struct runqueue runqueue_t;
 186
 187struct prio_array {
 188        unsigned int nr_active;
 189        unsigned long bitmap[BITMAP_SIZE];
 190        struct list_head queue[MAX_PRIO];
 191};
 192
 193/*
 194 * This is the main, per-CPU runqueue data structure.
 195 *
 196 * Locking rule: those places that want to lock multiple runqueues
 197 * (such as the load balancing or the thread migration code), lock
 198 * acquire operations must be ordered by ascending &runqueue.
 199 */
 200struct runqueue {
 201        spinlock_t lock;
 202
 203        /*
 204         * nr_running and cpu_load should be in the same cacheline because
 205         * remote CPUs use both these fields when doing load calculation.
 206         */
 207        unsigned long nr_running;
 208#ifdef CONFIG_SMP
 209        unsigned long cpu_load;
 210#endif
 211        unsigned long long nr_switches;
 212
 213        /*
 214         * This is part of a global counter where only the total sum
 215         * over all CPUs matters. A task can increase this counter on
 216         * one CPU and if it got migrated afterwards it may decrease
 217         * it on another CPU. Always updated under the runqueue lock:
 218         */
 219        unsigned long nr_uninterruptible;
 220
 221        unsigned long expired_timestamp;
 222        unsigned long long timestamp_last_tick;
 223        task_t *curr, *idle;
 224        struct mm_struct *prev_mm;
 225        prio_array_t *active, *expired, arrays[2];
 226        int best_expired_prio;
 227        atomic_t nr_iowait;
 228
 229#ifdef CONFIG_SMP
 230        struct sched_domain *sd;
 231
 232        /* For active balancing */
 233        int active_balance;
 234        int push_cpu;
 235
 236        task_t *migration_thread;
 237        struct list_head migration_queue;
 238#endif
 239
 240#ifdef CONFIG_SCHEDSTATS
 241        /* latency stats */
 242        struct sched_info rq_sched_info;
 243
 244        /* sys_sched_yield() stats */
 245        unsigned long yld_exp_empty;
 246        unsigned long yld_act_empty;
 247        unsigned long yld_both_empty;
 248        unsigned long yld_cnt;
 249
 250        /* schedule() stats */
 251        unsigned long sched_switch;
 252        unsigned long sched_cnt;
 253        unsigned long sched_goidle;
 254
 255        /* try_to_wake_up() stats */
 256        unsigned long ttwu_cnt;
 257        unsigned long ttwu_local;
 258#endif
 259};
 260
 261static DEFINE_PER_CPU(struct runqueue, runqueues);
 262
 263#define for_each_domain(cpu, domain) \
 264        for (domain = cpu_rq(cpu)->sd; domain; domain = domain->parent)
 265
 266#define cpu_rq(cpu)             (&per_cpu(runqueues, (cpu)))
 267#define this_rq()               (&__get_cpu_var(runqueues))
 268#define task_rq(p)              cpu_rq(task_cpu(p))
 269#define cpu_curr(cpu)           (cpu_rq(cpu)->curr)
 270
 271/*
 272 * Default context-switch locking:
 273 */
 274#ifndef prepare_arch_switch
 275# define prepare_arch_switch(rq, next)  do { } while (0)
 276# define finish_arch_switch(rq, next)   spin_unlock_irq(&(rq)->lock)
 277# define task_running(rq, p)            ((rq)->curr == (p))
 278#endif
 279
 280/*
 281 * task_rq_lock - lock the runqueue a given task resides on and disable
 282 * interrupts.  Note the ordering: we can safely lookup the task_rq without
 283 * explicitly disabling preemption.
 284 */
 285static inline runqueue_t *task_rq_lock(task_t *p, unsigned long *flags)
 286        __acquires(rq->lock)
 287{
 288        struct runqueue *rq;
 289
 290repeat_lock_task:
 291        local_irq_save(*flags);
 292        rq = task_rq(p);
 293        spin_lock(&rq->lock);
 294        if (unlikely(rq != task_rq(p))) {
 295                spin_unlock_irqrestore(&rq->lock, *flags);
 296                goto repeat_lock_task;
 297        }
 298        return rq;
 299}
 300
 301static inline void task_rq_unlock(runqueue_t *rq, unsigned long *flags)
 302        __releases(rq->lock)
 303{
 304        spin_unlock_irqrestore(&rq->lock, *flags);
 305}
 306
 307#ifdef CONFIG_SCHEDSTATS
 308/*
 309 * bump this up when changing the output format or the meaning of an existing
 310 * format, so that tools can adapt (or abort)
 311 */
 312#define SCHEDSTAT_VERSION 11
 313
 314static int show_schedstat(struct seq_file *seq, void *v)
 315{
 316        int cpu;
 317
 318        seq_printf(seq, "version %d\n", SCHEDSTAT_VERSION);
 319        seq_printf(seq, "timestamp %lu\n", jiffies);
 320        for_each_online_cpu(cpu) {
 321                runqueue_t *rq = cpu_rq(cpu);
 322#ifdef CONFIG_SMP
 323                struct sched_domain *sd;
 324                int dcnt = 0;
 325#endif
 326
 327                /* runqueue-specific stats */
 328                seq_printf(seq,
 329                    "cpu%d %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu",
 330                    cpu, rq->yld_both_empty,
 331                    rq->yld_act_empty, rq->yld_exp_empty, rq->yld_cnt,
 332                    rq->sched_switch, rq->sched_cnt, rq->sched_goidle,
 333                    rq->ttwu_cnt, rq->ttwu_local,
 334                    rq->rq_sched_info.cpu_time,
 335                    rq->rq_sched_info.run_delay, rq->rq_sched_info.pcnt);
 336
 337                seq_printf(seq, "\n");
 338
 339#ifdef CONFIG_SMP
 340                /* domain-specific stats */
 341                for_each_domain(cpu, sd) {
 342                        enum idle_type itype;
 343                        char mask_str[NR_CPUS];
 344
 345                        cpumask_scnprintf(mask_str, NR_CPUS, sd->span);
 346                        seq_printf(seq, "domain%d %s", dcnt++, mask_str);
 347                        for (itype = SCHED_IDLE; itype < MAX_IDLE_TYPES;
 348                                        itype++) {
 349                                seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu",
 350                                    sd->lb_cnt[itype],
 351                                    sd->lb_balanced[itype],
 352                                    sd->lb_failed[itype],
 353                                    sd->lb_imbalance[itype],
 354                                    sd->lb_gained[itype],
 355                                    sd->lb_hot_gained[itype],
 356                                    sd->lb_nobusyq[itype],
 357                                    sd->lb_nobusyg[itype]);
 358                        }
 359                        seq_printf(seq, " %lu %lu %lu %lu %lu %lu %lu %lu\n",
 360                            sd->alb_cnt, sd->alb_failed, sd->alb_pushed,
 361                            sd->sbe_pushed, sd->sbe_attempts,
 362                            sd->ttwu_wake_remote, sd->ttwu_move_affine, sd->ttwu_move_balance);
 363                }
 364#endif
 365        }
 366        return 0;
 367}
 368
 369static int schedstat_open(struct inode *inode, struct file *file)
 370{
 371        unsigned int size = PAGE_SIZE * (1 + num_online_cpus() / 32);
 372        char *buf = kmalloc(size, GFP_KERNEL);
 373        struct seq_file *m;
 374        int res;
 375
 376        if (!buf)
 377                return -ENOMEM;
 378        res = single_open(file, show_schedstat, NULL);
 379        if (!res) {
 380                m = file->private_data;
 381                m->buf = buf;
 382                m->size = size;
 383        } else
 384                kfree(buf);
 385        return res;
 386}
 387
 388struct file_operations proc_schedstat_operations = {
 389        .open    = schedstat_open,
 390        .read    = seq_read,
 391        .llseek  = seq_lseek,
 392        .release = single_release,
 393};
 394
 395# define schedstat_inc(rq, field)       do { (rq)->field++; } while (0)
 396# define schedstat_add(rq, field, amt)  do { (rq)->field += (amt); } while (0)
 397#else /* !CONFIG_SCHEDSTATS */
 398# define schedstat_inc(rq, field)       do { } while (0)
 399# define schedstat_add(rq, field, amt)  do { } while (0)
 400#endif
 401
 402/*
 403 * rq_lock - lock a given runqueue and disable interrupts.
 404 */
 405static inline runqueue_t *this_rq_lock(void)
 406        __acquires(rq->lock)
 407{
 408        runqueue_t *rq;
 409
 410        local_irq_disable();
 411        rq = this_rq();
 412        spin_lock(&rq->lock);
 413
 414        return rq;
 415}
 416
 417#ifdef CONFIG_SCHED_SMT
 418static int cpu_and_siblings_are_idle(int cpu)
 419{
 420        int sib;
 421        for_each_cpu_mask(sib, cpu_sibling_map[cpu]) {
 422                if (idle_cpu(sib))
 423                        continue;
 424                return 0;
 425        }
 426
 427        return 1;
 428}
 429#else
 430#define cpu_and_siblings_are_idle(A) idle_cpu(A)
 431#endif
 432
 433#ifdef CONFIG_SCHEDSTATS
 434/*
 435 * Called when a process is dequeued from the active array and given
 436 * the cpu.  We should note that with the exception of interactive
 437 * tasks, the expired queue will become the active queue after the active
 438 * queue is empty, without explicitly dequeuing and requeuing tasks in the
 439 * expired queue.  (Interactive tasks may be requeued directly to the
 440 * active queue, thus delaying tasks in the expired queue from running;
 441 * see scheduler_tick()).
 442 *
 443 * This function is only called from sched_info_arrive(), rather than
 444 * dequeue_task(). Even though a task may be queued and dequeued multiple
 445 * times as it is shuffled about, we're really interested in knowing how
 446 * long it was from the *first* time it was queued to the time that it
 447 * finally hit a cpu.
 448 */
 449static inline void sched_info_dequeued(task_t *t)
 450{
 451        t->sched_info.last_queued = 0;
 452}
 453
 454/*
 455 * Called when a task finally hits the cpu.  We can now calculate how
 456 * long it was waiting to run.  We also note when it began so that we
 457 * can keep stats on how long its timeslice is.
 458 */
 459static inline void sched_info_arrive(task_t *t)
 460{
 461        unsigned long now = jiffies, diff = 0;
 462        struct runqueue *rq = task_rq(t);
 463
 464        if (t->sched_info.last_queued)
 465                diff = now - t->sched_info.last_queued;
 466        sched_info_dequeued(t);
 467        t->sched_info.run_delay += diff;
 468        t->sched_info.last_arrival = now;
 469        t->sched_info.pcnt++;
 470
 471        if (!rq)
 472                return;
 473
 474        rq->rq_sched_info.run_delay += diff;
 475        rq->rq_sched_info.pcnt++;
 476}
 477
 478/*
 479 * Called when a process is queued into either the active or expired
 480 * array.  The time is noted and later used to determine how long we
 481 * had to wait for us to reach the cpu.  Since the expired queue will
 482 * become the active queue after active queue is empty, without dequeuing
 483 * and requeuing any tasks, we are interested in queuing to either. It
 484 * is unusual but not impossible for tasks to be dequeued and immediately
 485 * requeued in the same or another array: this can happen in sched_yield(),
 486 * set_user_nice(), and even load_balance() as it moves tasks from runqueue
 487 * to runqueue.
 488 *
 489 * This function is only called from enqueue_task(), but also only updates
 490 * the timestamp if it is already not set.  It's assumed that
 491 * sched_info_dequeued() will clear that stamp when appropriate.
 492 */
 493static inline void sched_info_queued(task_t *t)
 494{
 495        if (!t->sched_info.last_queued)
 496                t->sched_info.last_queued = jiffies;
 497}
 498
 499/*
 500 * Called when a process ceases being the active-running process, either
 501 * voluntarily or involuntarily.  Now we can calculate how long we ran.
 502 */
 503static inline void sched_info_depart(task_t *t)
 504{
 505        struct runqueue *rq = task_rq(t);
 506        unsigned long diff = jiffies - t->sched_info.last_arrival;
 507
 508        t->sched_info.cpu_time += diff;
 509
 510        if (rq)
 511                rq->rq_sched_info.cpu_time += diff;
 512}
 513
 514/*
 515 * Called when tasks are switched involuntarily due, typically, to expiring
 516 * their time slice.  (This may also be called when switching to or from
 517 * the idle task.)  We are only called when prev != next.
 518 */
 519static inline void sched_info_switch(task_t *prev, task_t *next)
 520{
 521        struct runqueue *rq = task_rq(prev);
 522
 523        /*
 524         * prev now departs the cpu.  It's not interesting to record
 525         * stats about how efficient we were at scheduling the idle
 526         * process, however.
 527         */
 528        if (prev != rq->idle)
 529                sched_info_depart(prev);
 530
 531        if (next != rq->idle)
 532                sched_info_arrive(next);
 533}
 534#else
 535#define sched_info_queued(t)            do { } while (0)
 536#define sched_info_switch(t, next)      do { } while (0)
 537#endif /* CONFIG_SCHEDSTATS */
 538
 539/*
 540 * Adding/removing a task to/from a priority array:
 541 */
 542static void dequeue_task(struct task_struct *p, prio_array_t *array)
 543{
 544        array->nr_active--;
 545        list_del(&p->run_list);
 546        if (list_empty(array->queue + p->prio))
 547                __clear_bit(p->prio, array->bitmap);
 548}
 549
 550static void enqueue_task(struct task_struct *p, prio_array_t *array)
 551{
 552        sched_info_queued(p);
 553        list_add_tail(&p->run_list, array->queue + p->prio);
 554        __set_bit(p->prio, array->bitmap);
 555        array->nr_active++;
 556        p->array = array;
 557}
 558
 559/*
 560 * Put task to the end of the run list without the overhead of dequeue
 561 * followed by enqueue.
 562 */
 563static void requeue_task(struct task_struct *p, prio_array_t *array)
 564{
 565        list_move_tail(&p->run_list, array->queue + p->prio);
 566}
 567
 568static inline void enqueue_task_head(struct task_struct *p, prio_array_t *array)
 569{
 570        list_add(&p->run_list, array->queue + p->prio);
 571        __set_bit(p->prio, array->bitmap);
 572        array->nr_active++;
 573        p->array = array;
 574}
 575
 576/*
 577 * effective_prio - return the priority that is based on the static
 578 * priority but is modified by bonuses/penalties.
 579 *
 580 * We scale the actual sleep average [0 .... MAX_SLEEP_AVG]
 581 * into the -5 ... 0 ... +5 bonus/penalty range.
 582 *
 583 * We use 25% of the full 0...39 priority range so that:
 584 *
 585 * 1) nice +19 interactive tasks do not preempt nice 0 CPU hogs.
 586 * 2) nice -20 CPU hogs do not get preempted by nice 0 tasks.
 587 *
 588 * Both properties are important to certain workloads.
 589 */
 590static int effective_prio(task_t *p)
 591{
 592        int bonus, prio;
 593
 594        if (rt_task(p))
 595                return p->prio;
 596
 597        bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
 598
 599        prio = p->static_prio - bonus;
 600        if (prio < MAX_RT_PRIO)
 601                prio = MAX_RT_PRIO;
 602        if (prio > MAX_PRIO-1)
 603                prio = MAX_PRIO-1;
 604        return prio;
 605}
 606
 607/*
 608 * __activate_task - move a task to the runqueue.
 609 */
 610static inline void __activate_task(task_t *p, runqueue_t *rq)
 611{
 612        enqueue_task(p, rq->active);
 613        rq->nr_running++;
 614}
 615
 616/*
 617 * __activate_idle_task - move idle task to the _front_ of runqueue.
 618 */
 619static inline void __activate_idle_task(task_t *p, runqueue_t *rq)
 620{
 621        enqueue_task_head(p, rq->active);
 622        rq->nr_running++;
 623}
 624
 625static void recalc_task_prio(task_t *p, unsigned long long now)
 626{
 627        /* Caller must always ensure 'now >= p->timestamp' */
 628        unsigned long long __sleep_time = now - p->timestamp;
 629        unsigned long sleep_time;
 630
 631        if (__sleep_time > NS_MAX_SLEEP_AVG)
 632                sleep_time = NS_MAX_SLEEP_AVG;
 633        else
 634                sleep_time = (unsigned long)__sleep_time;
 635
 636        if (likely(sleep_time > 0)) {
 637                /*
 638                 * User tasks that sleep a long time are categorised as
 639                 * idle and will get just interactive status to stay active &
 640                 * prevent them suddenly becoming cpu hogs and starving
 641                 * other processes.
 642                 */
 643                if (p->mm && p->activated != -1 &&
 644                        sleep_time > INTERACTIVE_SLEEP(p)) {
 645                                p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG -
 646                                                DEF_TIMESLICE);
 647                } else {
 648                        /*
 649                         * The lower the sleep avg a task has the more
 650                         * rapidly it will rise with sleep time.
 651                         */
 652                        sleep_time *= (MAX_BONUS - CURRENT_BONUS(p)) ? : 1;
 653
 654                        /*
 655                         * Tasks waking from uninterruptible sleep are
 656                         * limited in their sleep_avg rise as they
 657                         * are likely to be waiting on I/O
 658                         */
 659                        if (p->activated == -1 && p->mm) {
 660                                if (p->sleep_avg >= INTERACTIVE_SLEEP(p))
 661                                        sleep_time = 0;
 662                                else if (p->sleep_avg + sleep_time >=
 663                                                INTERACTIVE_SLEEP(p)) {
 664                                        p->sleep_avg = INTERACTIVE_SLEEP(p);
 665                                        sleep_time = 0;
 666                                }
 667                        }
 668
 669                        /*
 670                         * This code gives a bonus to interactive tasks.
 671                         *
 672                         * The boost works by updating the 'average sleep time'
 673                         * value here, based on ->timestamp. The more time a
 674                         * task spends sleeping, the higher the average gets -
 675                         * and the higher the priority boost gets as well.
 676                         */
 677                        p->sleep_avg += sleep_time;
 678
 679                        if (p->sleep_avg > NS_MAX_SLEEP_AVG)
 680                                p->sleep_avg = NS_MAX_SLEEP_AVG;
 681                }
 682        }
 683
 684        p->prio = effective_prio(p);
 685}
 686
 687/*
 688 * activate_task - move a task to the runqueue and do priority recalculation
 689 *
 690 * Update all the scheduling statistics stuff. (sleep average
 691 * calculation, priority modifiers, etc.)
 692 */
 693static void activate_task(task_t *p, runqueue_t *rq, int local)
 694{
 695        unsigned long long now;
 696
 697        now = sched_clock();
 698#ifdef CONFIG_SMP
 699        if (!local) {
 700                /* Compensate for drifting sched_clock */
 701                runqueue_t *this_rq = this_rq();
 702                now = (now - this_rq->timestamp_last_tick)
 703                        + rq->timestamp_last_tick;
 704        }
 705#endif
 706
 707        recalc_task_prio(p, now);
 708
 709        /*
 710         * This checks to make sure it's not an uninterruptible task
 711         * that is now waking up.
 712         */
 713        if (!p->activated) {
 714                /*
 715                 * Tasks which were woken up by interrupts (ie. hw events)
 716                 * are most likely of interactive nature. So we give them
 717                 * the credit of extending their sleep time to the period
 718                 * of time they spend on the runqueue, waiting for execution
 719                 * on a CPU, first time around:
 720                 */
 721                if (in_interrupt())
 722                        p->activated = 2;
 723                else {
 724                        /*
 725                         * Normal first-time wakeups get a credit too for
 726                         * on-runqueue time, but it will be weighted down:
 727                         */
 728                        p->activated = 1;
 729                }
 730        }
 731        p->timestamp = now;
 732
 733        __activate_task(p, rq);
 734}
 735
 736/*
 737 * deactivate_task - remove a task from the runqueue.
 738 */
 739static void deactivate_task(struct task_struct *p, runqueue_t *rq)
 740{
 741        rq->nr_running--;
 742        dequeue_task(p, p->array);
 743        p->array = NULL;
 744}
 745
 746/*
 747 * resched_task - mark a task 'to be rescheduled now'.
 748 *
 749 * On UP this means the setting of the need_resched flag, on SMP it
 750 * might also involve a cross-CPU call to trigger the scheduler on
 751 * the target CPU.
 752 */
 753#ifdef CONFIG_SMP
 754static void resched_task(task_t *p)
 755{
 756        int need_resched, nrpolling;
 757
 758        assert_spin_locked(&task_rq(p)->lock);
 759
 760        /* minimise the chance of sending an interrupt to poll_idle() */
 761        nrpolling = test_tsk_thread_flag(p,TIF_POLLING_NRFLAG);
 762        need_resched = test_and_set_tsk_thread_flag(p,TIF_NEED_RESCHED);
 763        nrpolling |= test_tsk_thread_flag(p,TIF_POLLING_NRFLAG);
 764
 765        if (!need_resched && !nrpolling && (task_cpu(p) != smp_processor_id()))
 766                smp_send_reschedule(task_cpu(p));
 767}
 768#else
 769static inline void resched_task(task_t *p)
 770{
 771        set_tsk_need_resched(p);
 772}
 773#endif
 774
 775/**
 776 * task_curr - is this task currently executing on a CPU?
 777 * @p: the task in question.
 778 */
 779inline int task_curr(const task_t *p)
 780{
 781        return cpu_curr(task_cpu(p)) == p;
 782}
 783
 784#ifdef CONFIG_SMP
 785enum request_type {
 786        REQ_MOVE_TASK,
 787        REQ_SET_DOMAIN,
 788};
 789
 790typedef struct {
 791        struct list_head list;
 792        enum request_type type;
 793
 794        /* For REQ_MOVE_TASK */
 795        task_t *task;
 796        int dest_cpu;
 797
 798        /* For REQ_SET_DOMAIN */
 799        struct sched_domain *sd;
 800
 801        struct completion done;
 802} migration_req_t;
 803
 804/*
 805 * The task's runqueue lock must be held.
 806 * Returns true if you have to wait for migration thread.
 807 */
 808static int migrate_task(task_t *p, int dest_cpu, migration_req_t *req)
 809{
 810        runqueue_t *rq = task_rq(p);
 811
 812        /*
 813         * If the task is not on a runqueue (and not running), then
 814         * it is sufficient to simply update the task's cpu field.
 815         */
 816        if (!p->array && !task_running(rq, p)) {
 817                set_task_cpu(p, dest_cpu);
 818                return 0;
 819        }
 820
 821        init_completion(&req->done);
 822        req->type = REQ_MOVE_TASK;
 823        req->task = p;
 824        req->dest_cpu = dest_cpu;
 825        list_add(&req->list, &rq->migration_queue);
 826        return 1;
 827}
 828
 829/*
 830 * wait_task_inactive - wait for a thread to unschedule.
 831 *
 832 * The caller must ensure that the task *will* unschedule sometime soon,
 833 * else this function might spin for a *long* time. This function can't
 834 * be called with interrupts off, or it may introduce deadlock with
 835 * smp_call_function() if an IPI is sent by the same process we are
 836 * waiting to become inactive.
 837 */
 838void wait_task_inactive(task_t * p)
 839{
 840        unsigned long flags;
 841        runqueue_t *rq;
 842        int preempted;
 843
 844repeat:
 845        rq = task_rq_lock(p, &flags);
 846        /* Must be off runqueue entirely, not preempted. */
 847        if (unlikely(p->array || task_running(rq, p))) {
 848                /* If it's preempted, we yield.  It could be a while. */
 849                preempted = !task_running(rq, p);
 850                task_rq_unlock(rq, &flags);
 851                cpu_relax();
 852                if (preempted)
 853                        yield();
 854                goto repeat;
 855        }
 856        task_rq_unlock(rq, &flags);
 857}
 858
 859/***
 860 * kick_process - kick a running thread to enter/exit the kernel
 861 * @p: the to-be-kicked thread
 862 *
 863 * Cause a process which is running on another CPU to enter
 864 * kernel-mode, without any delay. (to get signals handled.)
 865 *
 866 * NOTE: this function doesnt have to take the runqueue lock,
 867 * because all it wants to ensure is that the remote task enters
 868 * the kernel. If the IPI races and the task has been migrated
 869 * to another CPU then no harm is done and the purpose has been
 870 * achieved as well.
 871 */
 872void kick_process(task_t *p)
 873{
 874        int cpu;
 875
 876        preempt_disable();
 877        cpu = task_cpu(p);
 878        if ((cpu != smp_processor_id()) && task_curr(p))
 879                smp_send_reschedule(cpu);
 880        preempt_enable();
 881}
 882
 883/*
 884 * Return a low guess at the load of a migration-source cpu.
 885 *
 886 * We want to under-estimate the load of migration sources, to
 887 * balance conservatively.
 888 */
 889static inline unsigned long source_load(int cpu)
 890{
 891        runqueue_t *rq = cpu_rq(cpu);
 892        unsigned long load_now = rq->nr_running * SCHED_LOAD_SCALE;
 893
 894        return min(rq->cpu_load, load_now);
 895}
 896
 897/*
 898 * Return a high guess at the load of a migration-target cpu
 899 */
 900static inline unsigned long target_load(int cpu)
 901{
 902        runqueue_t *rq = cpu_rq(cpu);
 903        unsigned long load_now = rq->nr_running * SCHED_LOAD_SCALE;
 904
 905        return max(rq->cpu_load, load_now);
 906}
 907
 908#endif
 909
 910/*
 911 * wake_idle() will wake a task on an idle cpu if task->cpu is
 912 * not idle and an idle cpu is available.  The span of cpus to
 913 * search starts with cpus closest then further out as needed,
 914 * so we always favor a closer, idle cpu.
 915 *
 916 * Returns the CPU we should wake onto.
 917 */
 918#if defined(ARCH_HAS_SCHED_WAKE_IDLE)
 919static int wake_idle(int cpu, task_t *p)
 920{
 921        cpumask_t tmp;
 922        struct sched_domain *sd;
 923        int i;
 924
 925        if (idle_cpu(cpu))
 926                return cpu;
 927
 928        for_each_domain(cpu, sd) {
 929                if (sd->flags & SD_WAKE_IDLE) {
 930                        cpus_and(tmp, sd->span, cpu_online_map);
 931                        cpus_and(tmp, tmp, p->cpus_allowed);
 932                        for_each_cpu_mask(i, tmp) {
 933                                if (idle_cpu(i))
 934                                        return i;
 935                        }
 936                }
 937                else break;
 938        }
 939        return cpu;
 940}
 941#else
 942static inline int wake_idle(int cpu, task_t *p)
 943{
 944        return cpu;
 945}
 946#endif
 947
 948/***
 949 * try_to_wake_up - wake up a thread
 950 * @p: the to-be-woken-up thread
 951 * @state: the mask of task states that can be woken
 952 * @sync: do a synchronous wakeup?
 953 *
 954 * Put it on the run-queue if it's not already there. The "current"
 955 * thread is always on the run-queue (except when the actual
 956 * re-schedule is in progress), and as such you're allowed to do
 957 * the simpler "current->state = TASK_RUNNING" to mark yourself
 958 * runnable without the overhead of this.
 959 *
 960 * returns failure only if the task is already active.
 961 */
 962static int try_to_wake_up(task_t * p, unsigned int state, int sync)
 963{
 964        int cpu, this_cpu, success = 0;
 965        unsigned long flags;
 966        long old_state;
 967        runqueue_t *rq;
 968#ifdef CONFIG_SMP
 969        unsigned long load, this_load;
 970        struct sched_domain *sd;
 971        int new_cpu;
 972#endif
 973
 974        rq = task_rq_lock(p, &flags);
 975        old_state = p->state;
 976        if (!(old_state & state))
 977                goto out;
 978
 979        if (p->array)
 980                goto out_running;
 981
 982        cpu = task_cpu(p);
 983        this_cpu = smp_processor_id();
 984
 985#ifdef CONFIG_SMP
 986        if (unlikely(task_running(rq, p)))
 987                goto out_activate;
 988
 989#ifdef CONFIG_SCHEDSTATS
 990        schedstat_inc(rq, ttwu_cnt);
 991        if (cpu == this_cpu) {
 992                schedstat_inc(rq, ttwu_local);
 993        } else {
 994                for_each_domain(this_cpu, sd) {
 995                        if (cpu_isset(cpu, sd->span)) {
 996                                schedstat_inc(sd, ttwu_wake_remote);
 997                                break;
 998                        }
 999                }
1000        }
1001#endif
1002
1003        new_cpu = cpu;
1004        if (cpu == this_cpu || unlikely(!cpu_isset(this_cpu, p->cpus_allowed)))
1005                goto out_set_cpu;
1006
1007        load = source_load(cpu);
1008        this_load = target_load(this_cpu);
1009
1010        /*
1011         * If sync wakeup then subtract the (maximum possible) effect of
1012         * the currently running task from the load of the current CPU:
1013         */
1014        if (sync)
1015                this_load -= SCHED_LOAD_SCALE;
1016
1017        /* Don't pull the task off an idle CPU to a busy one */
1018        if (load < SCHED_LOAD_SCALE/2 && this_load > SCHED_LOAD_SCALE/2)
1019                goto out_set_cpu;
1020
1021        new_cpu = this_cpu; /* Wake to this CPU if we can */
1022
1023        /*
1024         * Scan domains for affine wakeup and passive balancing
1025         * possibilities.
1026         */
1027        for_each_domain(this_cpu, sd) {
1028                unsigned int imbalance;
1029                /*
1030                 * Start passive balancing when half the imbalance_pct
1031                 * limit is reached.
1032                 */
1033                imbalance = sd->imbalance_pct + (sd->imbalance_pct - 100) / 2;
1034
1035                if ((sd->flags & SD_WAKE_AFFINE) &&
1036                                !task_hot(p, rq->timestamp_last_tick, sd)) {
1037                        /*
1038                         * This domain has SD_WAKE_AFFINE and p is cache cold
1039                         * in this domain.
1040                         */
1041                        if (cpu_isset(cpu, sd->span)) {
1042                                schedstat_inc(sd, ttwu_move_affine);
1043                                goto out_set_cpu;
1044                        }
1045                } else if ((sd->flags & SD_WAKE_BALANCE) &&
1046                                imbalance*this_load <= 100*load) {
1047                        /*
1048                         * This domain has SD_WAKE_BALANCE and there is
1049                         * an imbalance.
1050                         */
1051                        if (cpu_isset(cpu, sd->span)) {
1052                                schedstat_inc(sd, ttwu_move_balance);
1053                                goto out_set_cpu;
1054                        }
1055                }
1056        }
1057
1058        new_cpu = cpu; /* Could not wake to this_cpu. Wake to cpu instead */
1059out_set_cpu:
1060        new_cpu = wake_idle(new_cpu, p);
1061        if (new_cpu != cpu) {
1062                set_task_cpu(p, new_cpu);
1063                task_rq_unlock(rq, &flags);
1064                /* might preempt at this point */
1065                rq = task_rq_lock(p, &flags);
1066                old_state = p->state;
1067                if (!(old_state & state))
1068                        goto out;
1069                if (p->array)
1070                        goto out_running;
1071
1072                this_cpu = smp_processor_id();
1073                cpu = task_cpu(p);
1074        }
1075
1076out_activate:
1077#endif /* CONFIG_SMP */
1078        if (old_state == TASK_UNINTERRUPTIBLE) {
1079                rq->nr_uninterruptible--;
1080                /*
1081                 * Tasks on involuntary sleep don't earn
1082                 * sleep_avg beyond just interactive state.
1083                 */
1084                p->activated = -1;
1085        }
1086
1087        /*
1088         * Sync wakeups (i.e. those types of wakeups where the waker
1089         * has indicated that it will leave the CPU in short order)
1090         * don't trigger a preemption, if the woken up task will run on
1091         * this cpu. (in this case the 'I will reschedule' promise of
1092         * the waker guarantees that the freshly woken up task is going
1093         * to be considered on this CPU.)
1094         */
1095        activate_task(p, rq, cpu == this_cpu);
1096        if (!sync || cpu != this_cpu) {
1097                if (TASK_PREEMPTS_CURR(p, rq))
1098                        resched_task(rq->curr);
1099        }
1100        success = 1;
1101
1102out_running:
1103        p->state = TASK_RUNNING;
1104out:
1105        task_rq_unlock(rq, &flags);
1106
1107        return success;
1108}
1109
1110int fastcall wake_up_process(task_t * p)
1111{
1112        return try_to_wake_up(p, TASK_STOPPED | TASK_TRACED |
1113                                 TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE, 0);
1114}
1115
1116EXPORT_SYMBOL(wake_up_process);
1117
1118int fastcall wake_up_state(task_t *p, unsigned int state)
1119{
1120        return try_to_wake_up(p, state, 0);
1121}
1122
1123#ifdef CONFIG_SMP
1124static int find_idlest_cpu(struct task_struct *p, int this_cpu,
1125                           struct sched_domain *sd);
1126#endif
1127
1128/*
1129 * Perform scheduler related setup for a newly forked process p.
1130 * p is forked by current.
1131 */
1132void fastcall sched_fork(task_t *p)
1133{
1134        /*
1135         * We mark the process as running here, but have not actually
1136         * inserted it onto the runqueue yet. This guarantees that
1137         * nobody will actually run it, and a signal or other external
1138         * event cannot wake it up and insert it on the runqueue either.
1139         */
1140        p->state = TASK_RUNNING;
1141        INIT_LIST_HEAD(&p->run_list);
1142        p->array = NULL;
1143        spin_lock_init(&p->switch_lock);
1144#ifdef CONFIG_SCHEDSTATS
1145        memset(&p->sched_info, 0, sizeof(p->sched_info));
1146#endif
1147#ifdef CONFIG_PREEMPT
1148        /*
1149         * During context-switch we hold precisely one spinlock, which
1150         * schedule_tail drops. (in the common case it's this_rq()->lock,
1151         * but it also can be p->switch_lock.) So we compensate with a count
1152         * of 1. Also, we want to start with kernel preemption disabled.
1153         */
1154        p->thread_info->preempt_count = 1;
1155#endif
1156        /*
1157         * Share the timeslice between parent and child, thus the
1158         * total amount of pending timeslices in the system doesn't change,
1159         * resulting in more scheduling fairness.
1160         */
1161        local_irq_disable();
1162        p->time_slice = (current->time_slice + 1) >> 1;
1163        /*
1164         * The remainder of the first timeslice might be recovered by
1165         * the parent if the child exits early enough.
1166         */
1167        p->first_time_slice = 1;
1168        current->time_slice >>= 1;
1169        p->timestamp = sched_clock();
1170        if (unlikely(!current->time_slice)) {
1171                /*
1172                 * This case is rare, it happens when the parent has only
1173                 * a single jiffy left from its timeslice. Taking the
1174                 * runqueue lock is not a problem.
1175                 */
1176                current->time_slice = 1;
1177                preempt_disable();
1178                scheduler_tick();
1179                local_irq_enable();
1180                preempt_enable();
1181        } else
1182                local_irq_enable();
1183}
1184
1185/*
1186 * wake_up_new_task - wake up a newly created task for the first time.
1187 *
1188 * This function will do some initial scheduler statistics housekeeping
1189 * that must be done for every newly created context, then puts the task
1190 * on the runqueue and wakes it.
1191 */
1192void fastcall wake_up_new_task(task_t * p, unsigned long clone_flags)
1193{
1194        unsigned long flags;
1195        int this_cpu, cpu;
1196        runqueue_t *rq, *this_rq;
1197
1198        rq = task_rq_lock(p, &flags);
1199        cpu = task_cpu(p);
1200        this_cpu = smp_processor_id();
1201
1202        BUG_ON(p->state != TASK_RUNNING);
1203
1204        /*
1205         * We decrease the sleep average of forking parents
1206         * and children as well, to keep max-interactive tasks
1207         * from forking tasks that are max-interactive. The parent
1208         * (current) is done further down, under its lock.
1209         */
1210        p->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(p) *
1211                CHILD_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
1212
1213        p->prio = effective_prio(p);
1214
1215        if (likely(cpu == this_cpu)) {
1216                if (!(clone_flags & CLONE_VM)) {
1217                        /*
1218                         * The VM isn't cloned, so we're in a good position to
1219                         * do child-runs-first in anticipation of an exec. This
1220                         * usually avoids a lot of COW overhead.
1221                         */
1222                        if (unlikely(!current->array))
1223                                __activate_task(p, rq);
1224                        else {
1225                                p->prio = current->prio;
1226                                list_add_tail(&p->run_list, &current->run_list);
1227                                p->array = current->array;
1228                                p->array->nr_active++;
1229                                rq->nr_running++;
1230                        }
1231                        set_need_resched();
1232                } else
1233                        /* Run child last */
1234                        __activate_task(p, rq);
1235                /*
1236                 * We skip the following code due to cpu == this_cpu
1237                 *
1238                 *   task_rq_unlock(rq, &flags);
1239                 *   this_rq = task_rq_lock(current, &flags);
1240                 */
1241                this_rq = rq;
1242        } else {
1243                this_rq = cpu_rq(this_cpu);
1244
1245                /*
1246                 * Not the local CPU - must adjust timestamp. This should
1247                 * get optimised away in the !CONFIG_SMP case.
1248                 */
1249                p->timestamp = (p->timestamp - this_rq->timestamp_last_tick)
1250                                        + rq->timestamp_last_tick;
1251                __activate_task(p, rq);
1252                if (TASK_PREEMPTS_CURR(p, rq))
1253                        resched_task(rq->curr);
1254
1255                /*
1256                 * Parent and child are on different CPUs, now get the
1257                 * parent runqueue to update the parent's ->sleep_avg:
1258                 */
1259                task_rq_unlock(rq, &flags);
1260                this_rq = task_rq_lock(current, &flags);
1261        }
1262        current->sleep_avg = JIFFIES_TO_NS(CURRENT_BONUS(current) *
1263                PARENT_PENALTY / 100 * MAX_SLEEP_AVG / MAX_BONUS);
1264        task_rq_unlock(this_rq, &flags);
1265}
1266
1267/*
1268 * Potentially available exiting-child timeslices are
1269 * retrieved here - this way the parent does not get
1270 * penalized for creating too many threads.
1271 *
1272 * (this cannot be used to 'generate' timeslices
1273 * artificially, because any timeslice recovered here
1274 * was given away by the parent in the first place.)
1275 */
1276void fastcall sched_exit(task_t * p)
1277{
1278        unsigned long flags;
1279        runqueue_t *rq;
1280
1281        /*
1282         * If the child was a (relative-) CPU hog then decrease
1283         * the sleep_avg of the parent as well.
1284         */
1285        rq = task_rq_lock(p->parent, &flags);
1286        if (p->first_time_slice) {
1287                p->parent->time_slice += p->time_slice;
1288                if (unlikely(p->parent->time_slice > task_timeslice(p)))
1289                        p->parent->time_slice = task_timeslice(p);
1290        }
1291        if (p->sleep_avg < p->parent->sleep_avg)
1292                p->parent->sleep_avg = p->parent->sleep_avg /
1293                (EXIT_WEIGHT + 1) * EXIT_WEIGHT + p->sleep_avg /
1294                (EXIT_WEIGHT + 1);
1295        task_rq_unlock(rq, &flags);
1296}
1297
1298/**
1299 * finish_task_switch - clean up after a task-switch
1300 * @prev: the thread we just switched away from.
1301 *
1302 * We enter this with the runqueue still locked, and finish_arch_switch()
1303 * will unlock it along with doing any other architecture-specific cleanup
1304 * actions.
1305 *
1306 * Note that we may have delayed dropping an mm in context_switch(). If
1307 * so, we finish that here outside of the runqueue lock.  (Doing it
1308 * with the lock held can cause deadlocks; see schedule() for
1309 * details.)
1310 */
1311static inline void finish_task_switch(task_t *prev)
1312        __releases(rq->lock)
1313{
1314        runqueue_t *rq = this_rq();
1315        struct mm_struct *mm = rq->prev_mm;
1316        unsigned long prev_task_flags;
1317
1318        rq->prev_mm = NULL;
1319
1320        /*
1321         * A task struct has one reference for the use as "current".
1322         * If a task dies, then it sets EXIT_ZOMBIE in tsk->exit_state and
1323         * calls schedule one last time. The schedule call will never return,
1324         * and the scheduled task must drop that reference.
1325         * The test for EXIT_ZOMBIE must occur while the runqueue locks are
1326         * still held, otherwise prev could be scheduled on another cpu, die
1327         * there before we look at prev->state, and then the reference would
1328         * be dropped twice.
1329         *              Manfred Spraul <manfred@colorfullife.com>
1330         */
1331        prev_task_flags = prev->flags;
1332        finish_arch_switch(rq, prev);
1333        if (mm)
1334                mmdrop(mm);
1335        if (unlikely(prev_task_flags & PF_DEAD))
1336                put_task_struct(prev);
1337}
1338
1339/**
1340 * schedule_tail - first thing a freshly forked thread must call.
1341 * @prev: the thread we just switched away from.
1342 */
1343asmlinkage void schedule_tail(task_t *prev)
1344        __releases(rq->lock)
1345{
1346        finish_task_switch(prev);
1347
1348        if (current->set_child_tid)
1349                put_user(current->pid, current->set_child_tid);
1350}
1351
1352/*
1353 * context_switch - switch to the new MM and the new
1354 * thread's register state.
1355 */
1356static inline
1357task_t * context_switch(runqueue_t *rq, task_t *prev, task_t *next)
1358{
1359        struct mm_struct *mm = next->mm;
1360        struct mm_struct *oldmm = prev->active_mm;
1361
1362        if (unlikely(!mm)) {
1363                next->active_mm = oldmm;
1364                atomic_inc(&oldmm->mm_count);
1365                enter_lazy_tlb(oldmm, next);
1366        } else
1367                switch_mm(oldmm, mm, next);
1368
1369        if (unlikely(!prev->mm)) {
1370                prev->active_mm = NULL;
1371                WARN_ON(rq->prev_mm);
1372                rq->prev_mm = oldmm;
1373        }
1374
1375        /* Here we just switch the register state and the stack. */
1376        switch_to(prev, next, prev);
1377
1378        return prev;
1379}
1380
1381/*
1382 * nr_running, nr_uninterruptible and nr_context_switches:
1383 *
1384 * externally visible scheduler statistics: current number of runnable
1385 * threads, current number of uninterruptible-sleeping threads, total
1386 * number of context switches performed since bootup.
1387 */
1388unsigned long nr_running(void)
1389{
1390        unsigned long i, sum = 0;
1391
1392        for_each_online_cpu(i)
1393                sum += cpu_rq(i)->nr_running;
1394
1395        return sum;
1396}
1397
1398unsigned long nr_uninterruptible(void)
1399{
1400        unsigned long i, sum = 0;
1401
1402        for_each_cpu(i)
1403                sum += cpu_rq(i)->nr_uninterruptible;
1404
1405        /*
1406         * Since we read the counters lockless, it might be slightly
1407         * inaccurate. Do not allow it to go below zero though:
1408         */
1409        if (unlikely((long)sum < 0))
1410                sum = 0;
1411
1412        return sum;
1413}
1414
1415unsigned long long nr_context_switches(void)
1416{
1417        unsigned long long i, sum = 0;
1418
1419        for_each_cpu(i)
1420                sum += cpu_rq(i)->nr_switches;
1421
1422        return sum;
1423}
1424
1425unsigned long nr_iowait(void)
1426{
1427        unsigned long i, sum = 0;
1428
1429        for_each_cpu(i)
1430                sum += atomic_read(&cpu_rq(i)->nr_iowait);
1431
1432        return sum;
1433}
1434
1435#ifdef CONFIG_SMP
1436
1437/*
1438 * double_rq_lock - safely lock two runqueues
1439 *
1440 * Note this does not disable interrupts like task_rq_lock,
1441 * you need to do so manually before calling.
1442 */
1443static void double_rq_lock(runqueue_t *rq1, runqueue_t *rq2)
1444        __acquires(rq1->lock)
1445        __acquires(rq2->lock)
1446{
1447        if (rq1 == rq2) {
1448                spin_lock(&rq1->lock);
1449                __acquire(rq2->lock);   /* Fake it out ;) */
1450        } else {
1451                if (rq1 < rq2) {
1452                        spin_lock(&rq1->lock);
1453                        spin_lock(&rq2->lock);
1454                } else {
1455                        spin_lock(&rq2->lock);
1456                        spin_lock(&rq1->lock);
1457                }
1458        }
1459}
1460
1461/*
1462 * double_rq_unlock - safely unlock two runqueues
1463 *
1464 * Note this does not restore interrupts like task_rq_unlock,
1465 * you need to do so manually after calling.
1466 */
1467static void double_rq_unlock(runqueue_t *rq1, runqueue_t *rq2)
1468        __releases(rq1->lock)
1469        __releases(rq2->lock)
1470{
1471        spin_unlock(&rq1->lock);
1472        if (rq1 != rq2)
1473                spin_unlock(&rq2->lock);
1474        else
1475                __release(rq2->lock);
1476}
1477
1478/*
1479 * double_lock_balance - lock the busiest runqueue, this_rq is locked already.
1480 */
1481static void double_lock_balance(runqueue_t *this_rq, runqueue_t *busiest)
1482        __releases(this_rq->lock)
1483        __acquires(busiest->lock)
1484        __acquires(this_rq->lock)
1485{
1486        if (unlikely(!spin_trylock(&busiest->lock))) {
1487                if (busiest < this_rq) {
1488                        spin_unlock(&this_rq->lock);
1489                        spin_lock(&busiest->lock);
1490                        spin_lock(&this_rq->lock);
1491                } else
1492                        spin_lock(&busiest->lock);
1493        }
1494}
1495
1496/*
1497 * find_idlest_cpu - find the least busy runqueue.
1498 */
1499static int find_idlest_cpu(struct task_struct *p, int this_cpu,
1500                           struct sched_domain *sd)
1501{
1502        unsigned long load, min_load, this_load;
1503        int i, min_cpu;
1504        cpumask_t mask;
1505
1506        min_cpu = UINT_MAX;
1507        min_load = ULONG_MAX;
1508
1509        cpus_and(mask, sd->span, p->cpus_allowed);
1510
1511        for_each_cpu_mask(i, mask) {
1512                load = target_load(i);
1513
1514                if (load < min_load) {
1515                        min_cpu = i;
1516                        min_load = load;
1517
1518                        /* break out early on an idle CPU: */
1519                        if (!min_load)
1520                                break;
1521                }
1522        }
1523
1524        /* add +1 to account for the new task */
1525        this_load = source_load(this_cpu) + SCHED_LOAD_SCALE;
1526
1527        /*
1528         * Would with the addition of the new task to the
1529         * current CPU there be an imbalance between this
1530         * CPU and the idlest CPU?
1531         *
1532         * Use half of the balancing threshold - new-context is
1533         * a good opportunity to balance.
1534         */
1535        if (min_load*(100 + (sd->imbalance_pct-100)/2) < this_load*100)
1536                return min_cpu;
1537
1538        return this_cpu;
1539}
1540
1541/*
1542 * If dest_cpu is allowed for this process, migrate the task to it.
1543 * This is accomplished by forcing the cpu_allowed mask to only
1544 * allow dest_cpu, which will force the cpu onto dest_cpu.  Then
1545 * the cpu_allowed mask is restored.
1546 */
1547static void sched_migrate_task(task_t *p, int dest_cpu)
1548{
1549        migration_req_t req;
1550        runqueue_t *rq;
1551        unsigned long flags;
1552
1553        rq = task_rq_lock(p, &flags);
1554        if (!cpu_isset(dest_cpu, p->cpus_allowed)
1555            || unlikely(cpu_is_offline(dest_cpu)))
1556                goto out;
1557
1558        /* force the process onto the specified CPU */
1559        if (migrate_task(p, dest_cpu, &req)) {
1560                /* Need to wait for migration thread (might exit: take ref). */
1561                struct task_struct *mt = rq->migration_thread;
1562                get_task_struct(mt);
1563                task_rq_unlock(rq, &flags);
1564                wake_up_process(mt);
1565                put_task_struct(mt);
1566                wait_for_completion(&req.done);
1567                return;
1568        }
1569out:
1570        task_rq_unlock(rq, &flags);
1571}
1572
1573/*
1574 * sched_exec(): find the highest-level, exec-balance-capable
1575 * domain and try to migrate the task to the least loaded CPU.
1576 *
1577 * execve() is a valuable balancing opportunity, because at this point
1578 * the task has the smallest effective memory and cache footprint.
1579 */
1580void sched_exec(void)
1581{
1582        struct sched_domain *tmp, *sd = NULL;
1583        int new_cpu, this_cpu = get_cpu();
1584
1585        /* Prefer the current CPU if there's only this task running */
1586        if (this_rq()->nr_running <= 1)
1587                goto out;
1588
1589        for_each_domain(this_cpu, tmp)
1590                if (tmp->flags & SD_BALANCE_EXEC)
1591                        sd = tmp;
1592
1593        if (sd) {
1594                schedstat_inc(sd, sbe_attempts);
1595                new_cpu = find_idlest_cpu(current, this_cpu, sd);
1596                if (new_cpu != this_cpu) {
1597                        schedstat_inc(sd, sbe_pushed);
1598                        put_cpu();
1599                        sched_migrate_task(current, new_cpu);
1600                        return;
1601                }
1602        }
1603out:
1604        put_cpu();
1605}
1606
1607/*
1608 * pull_task - move a task from a remote runqueue to the local runqueue.
1609 * Both runqueues must be locked.
1610 */
1611static inline
1612void pull_task(runqueue_t *src_rq, prio_array_t *src_array, task_t *p,
1613               runqueue_t *this_rq, prio_array_t *this_array, int this_cpu)
1614{
1615        dequeue_task(p, src_array);
1616        src_rq->nr_running--;
1617        set_task_cpu(p, this_cpu);
1618        this_rq->nr_running++;
1619        enqueue_task(p, this_array);
1620        p->timestamp = (p->timestamp - src_rq->timestamp_last_tick)
1621                                + this_rq->timestamp_last_tick;
1622        /*
1623         * Note that idle threads have a prio of MAX_PRIO, for this test
1624         * to be always true for them.
1625         */
1626        if (TASK_PREEMPTS_CURR(p, this_rq))
1627                resched_task(this_rq->curr);
1628}
1629
1630/*
1631 * can_migrate_task - may task p from runqueue rq be migrated to this_cpu?
1632 */
1633static inline
1634int can_migrate_task(task_t *p, runqueue_t *rq, int this_cpu,
1635                     struct sched_domain *sd, enum idle_type idle)
1636{
1637        /*
1638         * We do not migrate tasks that are:
1639         * 1) running (obviously), or
1640         * 2) cannot be migrated to this CPU due to cpus_allowed, or
1641         * 3) are cache-hot on their current CPU.
1642         */
1643        if (task_running(rq, p))
1644                return 0;
1645        if (!cpu_isset(this_cpu, p->cpus_allowed))
1646                return 0;
1647
1648        /*
1649         * Aggressive migration if:
1650         * 1) the [whole] cpu is idle, or
1651         * 2) too many balance attempts have failed.
1652         */
1653
1654        if (cpu_and_siblings_are_idle(this_cpu) || \
1655                        sd->nr_balance_failed > sd->cache_nice_tries)
1656                return 1;
1657
1658        if (task_hot(p, rq->timestamp_last_tick, sd))
1659                        return 0;
1660        return 1;
1661}
1662
1663/*
1664 * move_tasks tries to move up to max_nr_move tasks from busiest to this_rq,
1665 * as part of a balancing operation within "domain". Returns the number of
1666 * tasks moved.
1667 *
1668 * Called with both runqueues locked.
1669 */
1670static int move_tasks(runqueue_t *this_rq, int this_cpu, runqueue_t *busiest,
1671                      unsigned long max_nr_move, struct sched_domain *sd,
1672                      enum idle_type idle)
1673{
1674        prio_array_t *array, *dst_array;
1675        struct list_head *head, *curr;
1676        int idx, pulled = 0;
1677        task_t *tmp;
1678
1679        if (max_nr_move <= 0 || busiest->nr_running <= 1)
1680                goto out;
1681
1682        /*
1683         * We first consider expired tasks. Those will likely not be
1684         * executed in the near future, and they are most likely to
1685         * be cache-cold, thus switching CPUs has the least effect
1686         * on them.
1687         */
1688        if (busiest->expired->nr_active) {
1689                array = busiest->expired;
1690                dst_array = this_rq->expired;
1691        } else {
1692                array = busiest->active;
1693                dst_array = this_rq->active;
1694        }
1695
1696new_array:
1697        /* Start searching at priority 0: */
1698        idx = 0;
1699skip_bitmap:
1700        if (!idx)
1701                idx = sched_find_first_bit(array->bitmap);
1702        else
1703                idx = find_next_bit(array->bitmap, MAX_PRIO, idx);
1704        if (idx >= MAX_PRIO) {
1705                if (array == busiest->expired && busiest->active->nr_active) {
1706                        array = busiest->active;
1707                        dst_array = this_rq->active;
1708                        goto new_array;
1709                }
1710                goto out;
1711        }
1712
1713        head = array->queue + idx;
1714        curr = head->prev;
1715skip_queue:
1716        tmp = list_entry(curr, task_t, run_list);
1717
1718        curr = curr->prev;
1719
1720        if (!can_migrate_task(tmp, busiest, this_cpu, sd, idle)) {
1721                if (curr != head)
1722                        goto skip_queue;
1723                idx++;
1724                goto skip_bitmap;
1725        }
1726
1727#ifdef CONFIG_SCHEDSTATS
1728        if (task_hot(tmp, busiest->timestamp_last_tick, sd))
1729                schedstat_inc(sd, lb_hot_gained[idle]);
1730#endif
1731
1732        pull_task(busiest, array, tmp, this_rq, dst_array, this_cpu);
1733        pulled++;
1734
1735        /* We only want to steal up to the prescribed number of tasks. */
1736        if (pulled < max_nr_move) {
1737                if (curr != head)
1738                        goto skip_queue;
1739                idx++;
1740                goto skip_bitmap;
1741        }
1742out:
1743        /*
1744         * Right now, this is the only place pull_task() is called,
1745         * so we can safely collect pull_task() stats here rather than
1746         * inside pull_task().
1747         */
1748        schedstat_add(sd, lb_gained[idle], pulled);
1749        return pulled;
1750}
1751
1752/*
1753 * find_busiest_group finds and returns the busiest CPU group within the
1754 * domain. It calculates and returns the number of tasks which should be
1755 * moved to restore balance via the imbalance parameter.
1756 */
1757static struct sched_group *
1758find_busiest_group(struct sched_domain *sd, int this_cpu,
1759                   unsigned long *imbalance, enum idle_type idle)
1760{
1761        struct sched_group *busiest = NULL, *this = NULL, *group = sd->groups;
1762        unsigned long max_load, avg_load, total_load, this_load, total_pwr;
1763
1764        max_load = this_load = total_load = total_pwr = 0;
1765
1766        do {
1767                unsigned long load;
1768                int local_group;
1769                int i;
1770
1771                local_group = cpu_isset(this_cpu, group->cpumask);
1772
1773                /* Tally up the load of all CPUs in the group */
1774                avg_load = 0;
1775
1776                for_each_cpu_mask(i, group->cpumask) {
1777                        /* Bias balancing toward cpus of our domain */
1778                        if (local_group)
1779                                load = target_load(i);
1780                        else
1781                                load = source_load(i);
1782
1783                        avg_load += load;
1784                }
1785
1786                total_load += avg_load;
1787                total_pwr += group->cpu_power;
1788
1789                /* Adjust by relative CPU power of the group */
1790                avg_load = (avg_load * SCHED_LOAD_SCALE) / group->cpu_power;
1791
1792                if (local_group) {
1793                        this_load = avg_load;
1794                        this = group;
1795                        goto nextgroup;
1796                } else if (avg_load > max_load) {
1797                        max_load = avg_load;
1798                        busiest = group;
1799                }
1800nextgroup:
1801                group = group->next;
1802        } while (group != sd->groups);
1803
1804        if (!busiest || this_load >= max_load)
1805                goto out_balanced;
1806
1807        avg_load = (SCHED_LOAD_SCALE * total_load) / total_pwr;
1808
1809        if (this_load >= avg_load ||
1810                        100*max_load <= sd->imbalance_pct*this_load)
1811                goto out_balanced;
1812
1813        /*
1814         * We're trying to get all the cpus to the average_load, so we don't
1815         * want to push ourselves above the average load, nor do we wish to
1816         * reduce the max loaded cpu below the average load, as either of these
1817         * actions would just result in more rebalancing later, and ping-pong
1818         * tasks around. Thus we look for the minimum possible imbalance.
1819         * Negative imbalances (*we* are more loaded than anyone else) will
1820         * be counted as no imbalance for these purposes -- we can't fix that
1821         * by pulling tasks to us.  Be careful of negative numbers as they'll
1822         * appear as very large values with unsigned longs.
1823         */
1824        /* How much load to actually move to equalise the imbalance */
1825        *imbalance = min((max_load - avg_load) * busiest->cpu_power,
1826                                (avg_load - this_load) * this->cpu_power)
1827                        / SCHED_LOAD_SCALE;
1828
1829        if (*imbalance < SCHED_LOAD_SCALE) {
1830                unsigned long pwr_now = 0, pwr_move = 0;
1831                unsigned long tmp;
1832
1833                if (max_load - this_load >= SCHED_LOAD_SCALE*2) {
1834                        *imbalance = 1;
1835                        return busiest;
1836                }
1837
1838                /*
1839                 * OK, we don't have enough imbalance to justify moving tasks,
1840                 * however we may be able to increase total CPU power used by
1841                 * moving them.
1842                 */
1843
1844                pwr_now += busiest->cpu_power*min(SCHED_LOAD_SCALE, max_load);
1845                pwr_now += this->cpu_power*min(SCHED_LOAD_SCALE, this_load);
1846                pwr_now /= SCHED_LOAD_SCALE;
1847
1848                /* Amount of load we'd subtract */
1849                tmp = SCHED_LOAD_SCALE*SCHED_LOAD_SCALE/busiest->cpu_power;
1850                if (max_load > tmp)
1851                        pwr_move += busiest->cpu_power*min(SCHED_LOAD_SCALE,
1852                                                        max_load - tmp);
1853
1854                /* Amount of load we'd add */
1855                if (max_load*busiest->cpu_power <
1856                                SCHED_LOAD_SCALE*SCHED_LOAD_SCALE)
1857                        tmp = max_load*busiest->cpu_power/this->cpu_power;
1858                else
1859                        tmp = SCHED_LOAD_SCALE*SCHED_LOAD_SCALE/this->cpu_power;
1860                pwr_move += this->cpu_power*min(SCHED_LOAD_SCALE, this_load + tmp);
1861                pwr_move /= SCHED_LOAD_SCALE;
1862
1863                /* Move if we gain throughput */
1864                if (pwr_move <= pwr_now)
1865                        goto out_balanced;
1866
1867                *imbalance = 1;
1868                return busiest;
1869        }
1870
1871        /* Get rid of the scaling factor, rounding down as we divide */
1872        *imbalance = *imbalance / SCHED_LOAD_SCALE;
1873
1874        return busiest;
1875
1876out_balanced:
1877        if (busiest && (idle == NEWLY_IDLE ||
1878                        (idle == SCHED_IDLE && max_load > SCHED_LOAD_SCALE)) ) {
1879                *imbalance = 1;
1880                return busiest;
1881        }
1882
1883        *imbalance = 0;
1884        return NULL;
1885}
1886
1887/*
1888 * find_busiest_queue - find the busiest runqueue among the cpus in group.
1889 */
1890static runqueue_t *find_busiest_queue(struct sched_group *group)
1891{
1892        unsigned long load, max_load = 0;
1893        runqueue_t *busiest = NULL;
1894        int i;
1895
1896        for_each_cpu_mask(i, group->cpumask) {
1897                load = source_load(i);
1898
1899                if (load > max_load) {
1900                        max_load = load;
1901                        busiest = cpu_rq(i);
1902                }
1903        }
1904
1905        return busiest;
1906}
1907
1908/*
1909 * Check this_cpu to ensure it is balanced within domain. Attempt to move
1910 * tasks if there is an imbalance.
1911 *
1912 * Called with this_rq unlocked.
1913 */
1914static int load_balance(int this_cpu, runqueue_t *this_rq,
1915                        struct sched_domain *sd, enum idle_type idle)
1916{
1917        struct sched_group *group;
1918        runqueue_t *busiest;
1919        unsigned long imbalance;
1920        int nr_moved;
1921
1922        spin_lock(&this_rq->lock);
1923        schedstat_inc(sd, lb_cnt[idle]);
1924
1925        group = find_busiest_group(sd, this_cpu, &imbalance, idle);
1926        if (!group) {
1927                schedstat_inc(sd, lb_nobusyg[idle]);
1928                goto out_balanced;
1929        }
1930
1931        busiest = find_busiest_queue(group);
1932        if (!busiest) {
1933                schedstat_inc(sd, lb_nobusyq[idle]);
1934                goto out_balanced;
1935        }
1936
1937        /*
1938         * This should be "impossible", but since load
1939         * balancing is inherently racy and statistical,
1940         * it could happen in theory.
1941         */
1942        if (unlikely(busiest == this_rq)) {
1943                WARN_ON(1);
1944                goto out_balanced;
1945        }
1946
1947        schedstat_add(sd, lb_imbalance[idle], imbalance);
1948
1949        nr_moved = 0;
1950        if (busiest->nr_running > 1) {
1951                /*
1952                 * Attempt to move tasks. If find_busiest_group has found
1953                 * an imbalance but busiest->nr_running <= 1, the group is
1954                 * still unbalanced. nr_moved simply stays zero, so it is
1955                 * correctly treated as an imbalance.
1956                 */
1957                double_lock_balance(this_rq, busiest);
1958                nr_moved = move_tasks(this_rq, this_cpu, busiest,
1959                                                imbalance, sd, idle);
1960                spin_unlock(&busiest->lock);
1961        }
1962        spin_unlock(&this_rq->lock);
1963
1964        if (!nr_moved) {
1965                schedstat_inc(sd, lb_failed[idle]);
1966                sd->nr_balance_failed++;
1967
1968                if (unlikely(sd->nr_balance_failed > sd->cache_nice_tries+2)) {
1969                        int wake = 0;
1970
1971                        spin_lock(&busiest->lock);
1972                        if (!busiest->active_balance) {
1973                                busiest->active_balance = 1;
1974                                busiest->push_cpu = this_cpu;
1975                                wake = 1;
1976                        }
1977                        spin_unlock(&busiest->lock);
1978                        if (wake)
1979                                wake_up_process(busiest->migration_thread);
1980
1981                        /*
1982                         * We've kicked active balancing, reset the failure
1983                         * counter.
1984                         */
1985                        sd->nr_balance_failed = sd->cache_nice_tries;
1986                }
1987
1988                /*
1989                 * We were unbalanced, but unsuccessful in move_tasks(),
1990                 * so bump the balance_interval to lessen the lock contention.
1991                 */
1992                if (sd->balance_interval < sd->max_interval)
1993                        sd->balance_interval++;
1994        } else {
1995                sd->nr_balance_failed = 0;
1996
1997                /* We were unbalanced, so reset the balancing interval */
1998                sd->balance_interval = sd->min_interval;
1999        }
2000
2001        return nr_moved;
2002
2003out_balanced:
2004        spin_unlock(&this_rq->lock);
2005
2006        schedstat_inc(sd, lb_balanced[idle]);
2007
2008        /* tune up the balancing interval */
2009        if (sd->balance_interval < sd->max_interval)
2010                sd->balance_interval *= 2;
2011
2012        return 0;
2013}
2014
2015/*
2016 * Check this_cpu to ensure it is balanced within domain. Attempt to move
2017 * tasks if there is an imbalance.
2018 *
2019 * Called from schedule when this_rq is about to become idle (NEWLY_IDLE).
2020 * this_rq is locked.
2021 */
2022static int load_balance_newidle(int this_cpu, runqueue_t *this_rq,
2023                                struct sched_domain *sd)
2024{
2025        struct sched_group *group;
2026        runqueue_t *busiest = NULL;
2027        unsigned long imbalance;
2028        int nr_moved = 0;
2029
2030        schedstat_inc(sd, lb_cnt[NEWLY_IDLE]);
2031        group = find_busiest_group(sd, this_cpu, &imbalance, NEWLY_IDLE);
2032        if (!group) {
2033                schedstat_inc(sd, lb_balanced[NEWLY_IDLE]);
2034                schedstat_inc(sd, lb_nobusyg[NEWLY_IDLE]);
2035                goto out;
2036        }
2037
2038        busiest = find_busiest_queue(group);
2039        if (!busiest || busiest == this_rq) {
2040                schedstat_inc(sd, lb_balanced[NEWLY_IDLE]);
2041                schedstat_inc(sd, lb_nobusyq[NEWLY_IDLE]);
2042                goto out;
2043        }
2044
2045        /* Attempt to move tasks */
2046        double_lock_balance(this_rq, busiest);
2047
2048        schedstat_add(sd, lb_imbalance[NEWLY_IDLE], imbalance);
2049        nr_moved = move_tasks(this_rq, this_cpu, busiest,
2050                                        imbalance, sd, NEWLY_IDLE);
2051        if (!nr_moved)
2052                schedstat_inc(sd, lb_failed[NEWLY_IDLE]);
2053
2054        spin_unlock(&busiest->lock);
2055
2056out:
2057        return nr_moved;
2058}
2059
2060/*
2061 * idle_balance is called by schedule() if this_cpu is about to become
2062 * idle. Attempts to pull tasks from other CPUs.
2063 */
2064static inline void idle_balance(int this_cpu, runqueue_t *this_rq)
2065{
2066        struct sched_domain *sd;
2067
2068        for_each_domain(this_cpu, sd) {
2069                if (sd->flags & SD_BALANCE_NEWIDLE) {
2070                        if (load_balance_newidle(this_cpu, this_rq, sd)) {
2071                                /* We've pulled tasks over so stop searching */
2072                                break;
2073                        }
2074                }
2075        }
2076}
2077
2078/*
2079 * active_load_balance is run by migration threads. It pushes running tasks
2080 * off the busiest CPU onto idle CPUs. It requires at least 1 task to be
2081 * running on each physical CPU where possible, and avoids physical /
2082 * logical imbalances.
2083 *
2084 * Called with busiest_rq locked.
2085 */
2086static void active_load_balance(runqueue_t *busiest_rq, int busiest_cpu)
2087{
2088        struct sched_domain *sd;
2089        struct sched_group *cpu_group;
2090        runqueue_t *target_rq;
2091        cpumask_t visited_cpus;
2092        int cpu;
2093
2094        /*
2095         * Search for suitable CPUs to push tasks to in successively higher
2096         * domains with SD_LOAD_BALANCE set.
2097         */
2098        visited_cpus = CPU_MASK_NONE;
2099        for_each_domain(busiest_cpu, sd) {
2100                if (!(sd->flags & SD_LOAD_BALANCE))
2101                        /* no more domains to search */
2102                        break;
2103
2104                schedstat_inc(sd, alb_cnt);
2105
2106                cpu_group = sd->groups;
2107                do {
2108                        for_each_cpu_mask(cpu, cpu_group->cpumask) {
2109                                if (busiest_rq->nr_running <= 1)
2110                                        /* no more tasks left to move */
2111                                        return;
2112                                if (cpu_isset(cpu, visited_cpus))
2113                                        continue;
2114                                cpu_set(cpu, visited_cpus);
2115                                if (!cpu_and_siblings_are_idle(cpu) || cpu == busiest_cpu)
2116                                        continue;
2117
2118                                target_rq = cpu_rq(cpu);
2119                                /*
2120                                 * This condition is "impossible", if it occurs
2121                                 * we need to fix it.  Originally reported by
2122                                 * Bjorn Helgaas on a 128-cpu setup.
2123                                 */
2124                                BUG_ON(busiest_rq == target_rq);
2125
2126                                /* move a task from busiest_rq to target_rq */
2127                                double_lock_balance(busiest_rq, target_rq);
2128                                if (move_tasks(target_rq, cpu, busiest_rq,
2129                                                1, sd, SCHED_IDLE)) {
2130                                        schedstat_inc(sd, alb_pushed);
2131                                } else {
2132                                        schedstat_inc(sd, alb_failed);
2133                                }
2134                                spin_unlock(&target_rq->lock);
2135                        }
2136                        cpu_group = cpu_group->next;
2137                } while (cpu_group != sd->groups);
2138        }
2139}
2140
2141/*
2142 * rebalance_tick will get called every timer tick, on every CPU.
2143 *
2144 * It checks each scheduling domain to see if it is due to be balanced,
2145 * and initiates a balancing operation if so.
2146 *
2147 * Balancing parameters are set up in arch_init_sched_domains.
2148 */
2149
2150/* Don't have all balancing operations going off at once */
2151#define CPU_OFFSET(cpu) (HZ * cpu / NR_CPUS)
2152
2153static void rebalance_tick(int this_cpu, runqueue_t *this_rq,
2154                           enum idle_type idle)
2155{
2156        unsigned long old_load, this_load;
2157        unsigned long j = jiffies + CPU_OFFSET(this_cpu);
2158        struct sched_domain *sd;
2159
2160        /* Update our load */
2161        old_load = this_rq->cpu_load;
2162        this_load = this_rq->nr_running * SCHED_LOAD_SCALE;
2163        /*
2164         * Round up the averaging division if load is increasing. This
2165         * prevents us from getting stuck on 9 if the load is 10, for
2166         * example.
2167         */
2168        if (this_load > old_load)
2169                old_load++;
2170        this_rq->cpu_load = (old_load + this_load) / 2;
2171
2172        for_each_domain(this_cpu, sd) {
2173                unsigned long interval;
2174
2175                if (!(sd->flags & SD_LOAD_BALANCE))
2176                        continue;
2177
2178                interval = sd->balance_interval;
2179                if (idle != SCHED_IDLE)
2180                        interval *= sd->busy_factor;
2181
2182                /* scale ms to jiffies */
2183                interval = msecs_to_jiffies(interval);
2184                if (unlikely(!interval))
2185                        interval = 1;
2186
2187                if (j - sd->last_balance >= interval) {
2188                        if (load_balance(this_cpu, this_rq, sd, idle)) {
2189                                /* We've pulled tasks over so no longer idle */
2190                                idle = NOT_IDLE;
2191                        }
2192                        sd->last_balance += interval;
2193                }
2194        }
2195}
2196#else
2197/*
2198 * on UP we do not need to balance between CPUs:
2199 */
2200static inline void rebalance_tick(int cpu, runqueue_t *rq, enum idle_type idle)
2201{
2202}
2203static inline void idle_balance(int cpu, runqueue_t *rq)
2204{
2205}
2206#endif
2207
2208static inline int wake_priority_sleeper(runqueue_t *rq)
2209{
2210        int ret = 0;
2211#ifdef CONFIG_SCHED_SMT
2212        spin_lock(&rq->lock);
2213        /*
2214         * If an SMT sibling task has been put to sleep for priority
2215         * reasons reschedule the idle task to see if it can now run.
2216         */
2217        if (rq->nr_running) {
2218                resched_task(rq->idle);
2219                ret = 1;
2220        }
2221        spin_unlock(&rq->lock);
2222#endif
2223        return ret;
2224}
2225
2226DEFINE_PER_CPU(struct kernel_stat, kstat);
2227
2228EXPORT_PER_CPU_SYMBOL(kstat);
2229
2230/*
2231 * This is called on clock ticks and on context switches.
2232 * Bank in p->sched_time the ns elapsed since the last tick or switch.
2233 */
2234static inline void update_cpu_clock(task_t *p, runqueue_t *rq,
2235                                    unsigned long long now)
2236{
2237        unsigned long long last = max(p->timestamp, rq->timestamp_last_tick);
2238        p->sched_time += now - last;
2239}
2240
2241/*
2242 * Return current->sched_time plus any more ns on the sched_clock
2243 * that have not yet been banked.
2244 */
2245unsigned long long current_sched_time(const task_t *tsk)
2246{
2247        unsigned long long ns;
2248        unsigned long flags;
2249        local_irq_save(flags);
2250        ns = max(tsk->timestamp, task_rq(tsk)->timestamp_last_tick);
2251        ns = tsk->sched_time + (sched_clock() - ns);
2252        local_irq_restore(flags);
2253        return ns;
2254}
2255
2256/*
2257 * We place interactive tasks back into the active array, if possible.
2258 *
2259 * To guarantee that this does not starve expired tasks we ignore the
2260 * interactivity of a task if the first expired task had to wait more
2261 * than a 'reasonable' amount of time. This deadline timeout is
2262 * load-dependent, as the frequency of array switched decreases with
2263 * increasing number of running tasks. We also ignore the interactivity
2264 * if a better static_prio task has expired:
2265 */
2266#define EXPIRED_STARVING(rq) \
2267        ((STARVATION_LIMIT && ((rq)->expired_timestamp && \
2268                (jiffies - (rq)->expired_timestamp >= \
2269                        STARVATION_LIMIT * ((rq)->nr_running) + 1))) || \
2270                        ((rq)->curr->static_prio > (rq)->best_expired_prio))
2271
2272/*
2273 * Account user cpu time to a process.
2274 * @p: the process that the cpu time gets accounted to
2275 * @hardirq_offset: the offset to subtract from hardirq_count()
2276 * @cputime: the cpu time spent in user space since the last update
2277 */
2278void account_user_time(struct task_struct *p, cputime_t cputime)
2279{
2280        struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2281        cputime64_t tmp;
2282
2283        p->utime = cputime_add(p->utime, cputime);
2284
2285        /* Add user time to cpustat. */
2286        tmp = cputime_to_cputime64(cputime);
2287        if (TASK_NICE(p) > 0)
2288                cpustat->nice = cputime64_add(cpustat->nice, tmp);
2289        else
2290                cpustat->user = cputime64_add(cpustat->user, tmp);
2291}
2292
2293/*
2294 * Account system cpu time to a process.
2295 * @p: the process that the cpu time gets accounted to
2296 * @hardirq_offset: the offset to subtract from hardirq_count()
2297 * @cputime: the cpu time spent in kernel space since the last update
2298 */
2299void account_system_time(struct task_struct *p, int hardirq_offset,
2300                         cputime_t cputime)
2301{
2302        struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2303        runqueue_t *rq = this_rq();
2304        cputime64_t tmp;
2305
2306        p->stime = cputime_add(p->stime, cputime);
2307
2308        /* Add system time to cpustat. */
2309        tmp = cputime_to_cputime64(cputime);
2310        if (hardirq_count() - hardirq_offset)
2311                cpustat->irq = cputime64_add(cpustat->irq, tmp);
2312        else if (softirq_count())
2313                cpustat->softirq = cputime64_add(cpustat->softirq, tmp);
2314        else if (p != rq->idle)
2315                cpustat->system = cputime64_add(cpustat->system, tmp);
2316        else if (atomic_read(&rq->nr_iowait) > 0)
2317                cpustat->iowait = cputime64_add(cpustat->iowait, tmp);
2318        else
2319                cpustat->idle = cputime64_add(cpustat->idle, tmp);
2320        /* Account for system time used */
2321        acct_update_integrals(p);
2322        /* Update rss highwater mark */
2323        update_mem_hiwater(p);
2324}
2325
2326/*
2327 * Account for involuntary wait time.
2328 * @p: the process from which the cpu time has been stolen
2329 * @steal: the cpu time spent in involuntary wait
2330 */
2331void account_steal_time(struct task_struct *p, cputime_t steal)
2332{
2333        struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
2334        cputime64_t tmp = cputime_to_cputime64(steal);
2335        runqueue_t *rq = this_rq();
2336
2337        if (p == rq->idle) {
2338                p->stime = cputime_add(p->stime, steal);
2339                if (atomic_read(&rq->nr_iowait) > 0)
2340                        cpustat->iowait = cputime64_add(cpustat->iowait, tmp);
2341                else
2342                        cpustat->idle = cputime64_add(cpustat->idle, tmp);
2343        } else
2344                cpustat->steal = cputime64_add(cpustat->steal, tmp);
2345}
2346
2347/*
2348 * This function gets called by the timer code, with HZ frequency.
2349 * We call it with interrupts disabled.
2350 *
2351 * It also gets called by the fork code, when changing the parent's
2352 * timeslices.
2353 */
2354void scheduler_tick(void)
2355{
2356        int cpu = smp_processor_id();
2357        runqueue_t *rq = this_rq();
2358        task_t *p = current;
2359        unsigned long long now = sched_clock();
2360
2361        update_cpu_clock(p, rq, now);
2362
2363        rq->timestamp_last_tick = now;
2364
2365        if (p == rq->idle) {
2366                if (wake_priority_sleeper(rq))
2367                        goto out;
2368                rebalance_tick(cpu, rq, SCHED_IDLE);
2369                return;
2370        }
2371
2372        /* Task might have expired already, but not scheduled off yet */
2373        if (p->array != rq->active) {
2374                set_tsk_need_resched(p);
2375                goto out;
2376        }
2377        spin_lock(&rq->lock);
2378        /*
2379         * The task was running during this tick - update the
2380         * time slice counter. Note: we do not update a thread's
2381         * priority until it either goes to sleep or uses up its
2382         * timeslice. This makes it possible for interactive tasks
2383         * to use up their timeslices at their highest priority levels.
2384         */
2385        if (rt_task(p)) {
2386                /*
2387                 * RR tasks need a special form of timeslice management.
2388                 * FIFO tasks have no timeslices.
2389                 */
2390                if ((p->policy == SCHED_RR) && !--p->time_slice) {
2391                        p->time_slice = task_timeslice(p);
2392                        p->first_time_slice = 0;
2393                        set_tsk_need_resched(p);
2394
2395                        /* put it at the end of the queue: */
2396                        requeue_task(p, rq->active);
2397                }
2398                goto out_unlock;
2399        }
2400        if (!--p->time_slice) {
2401                dequeue_task(p, rq->active);
2402                set_tsk_need_resched(p);
2403                p->prio = effective_prio(p);
2404                p->time_slice = task_timeslice(p);
2405                p->first_time_slice = 0;
2406
2407                if (!rq->expired_timestamp)
2408                        rq->expired_timestamp = jiffies;
2409                if (!TASK_INTERACTIVE(p) || EXPIRED_STARVING(rq)) {
2410                        enqueue_task(p, rq->expired);
2411                        if (p->static_prio < rq->best_expired_prio)
2412                                rq->best_expired_prio = p->static_prio;
2413                } else
2414                        enqueue_task(p, rq->active);
2415        } else {
2416                /*
2417                 * Prevent a too long timeslice allowing a task to monopolize
2418                 * the CPU. We do this by splitting up the timeslice into
2419                 * smaller pieces.
2420                 *
2421                 * Note: this does not mean the task's timeslices expire or
2422                 * get lost in any way, they just might be preempted by
2423                 * another task of equal priority. (one with higher
2424                 * priority would have preempted this task already.) We
2425                 * requeue this task to the end of the list on this priority
2426                 * level, which is in essence a round-robin of tasks with
2427                 * equal priority.
2428                 *
2429                 * This only applies to tasks in the interactive
2430                 * delta range with at least TIMESLICE_GRANULARITY to requeue.
2431                 */
2432                if (TASK_INTERACTIVE(p) && !((task_timeslice(p) -
2433                        p->time_slice) % TIMESLICE_GRANULARITY(p)) &&
2434                        (p->time_slice >= TIMESLICE_GRANULARITY(p)) &&
2435                        (p->array == rq->active)) {
2436
2437                        requeue_task(p, rq->active);
2438                        set_tsk_need_resched(p);
2439                }
2440        }
2441out_unlock:
2442        spin_unlock(&rq->lock);
2443out:
2444        rebalance_tick(cpu, rq, NOT_IDLE);
2445}
2446
2447#ifdef CONFIG_SCHED_SMT
2448static inline void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2449{
2450        struct sched_domain *sd = this_rq->sd;
2451        cpumask_t sibling_map;
2452        int i;
2453
2454        if (!(sd->flags & SD_SHARE_CPUPOWER))
2455                return;
2456
2457        /*
2458         * Unlock the current runqueue because we have to lock in
2459         * CPU order to avoid deadlocks. Caller knows that we might
2460         * unlock. We keep IRQs disabled.
2461         */
2462        spin_unlock(&this_rq->lock);
2463
2464        sibling_map = sd->span;
2465
2466        for_each_cpu_mask(i, sibling_map)
2467                spin_lock(&cpu_rq(i)->lock);
2468        /*
2469         * We clear this CPU from the mask. This both simplifies the
2470         * inner loop and keps this_rq locked when we exit:
2471         */
2472        cpu_clear(this_cpu, sibling_map);
2473
2474        for_each_cpu_mask(i, sibling_map) {
2475                runqueue_t *smt_rq = cpu_rq(i);
2476
2477                /*
2478                 * If an SMT sibling task is sleeping due to priority
2479                 * reasons wake it up now.
2480                 */
2481                if (smt_rq->curr == smt_rq->idle && smt_rq->nr_running)
2482                        resched_task(smt_rq->idle);
2483        }
2484
2485        for_each_cpu_mask(i, sibling_map)
2486                spin_unlock(&cpu_rq(i)->lock);
2487        /*
2488         * We exit with this_cpu's rq still held and IRQs
2489         * still disabled:
2490         */
2491}
2492
2493static inline int dependent_sleeper(int this_cpu, runqueue_t *this_rq)
2494{
2495        struct sched_domain *sd = this_rq->sd;
2496        cpumask_t sibling_map;
2497        prio_array_t *array;
2498        int ret = 0, i;
2499        task_t *p;
2500
2501        if (!(sd->flags & SD_SHARE_CPUPOWER))
2502                return 0;
2503
2504        /*
2505         * The same locking rules and details apply as for
2506         * wake_sleeping_dependent():
2507         */
2508        spin_unlock(&this_rq->lock);
2509        sibling_map = sd->span;
2510        for_each_cpu_mask(i, sibling_map)
2511                spin_lock(&cpu_rq(i)->lock);
2512        cpu_clear(this_cpu, sibling_map);
2513
2514        /*
2515         * Establish next task to be run - it might have gone away because
2516         * we released the runqueue lock above:
2517         */
2518        if (!this_rq->nr_running)
2519                goto out_unlock;
2520        array = this_rq->active;
2521        if (!array->nr_active)
2522                array = this_rq->expired;
2523        BUG_ON(!array->nr_active);
2524
2525        p = list_entry(array->queue[sched_find_first_bit(array->bitmap)].next,
2526                task_t, run_list);
2527
2528        for_each_cpu_mask(i, sibling_map) {
2529                runqueue_t *smt_rq = cpu_rq(i);
2530                task_t *smt_curr = smt_rq->curr;
2531
2532                /*
2533                 * If a user task with lower static priority than the
2534                 * running task on the SMT sibling is trying to schedule,
2535                 * delay it till there is proportionately less timeslice
2536                 * left of the sibling task to prevent a lower priority
2537                 * task from using an unfair proportion of the
2538                 * physical cpu's resources. -ck
2539                 */
2540                if (((smt_curr->time_slice * (100 - sd->per_cpu_gain) / 100) >
2541                        task_timeslice(p) || rt_task(smt_curr)) &&
2542                        p->mm && smt_curr->mm && !rt_task(p))
2543                                ret = 1;
2544
2545                /*
2546                 * Reschedule a lower priority task on the SMT sibling,
2547                 * or wake it up if it has been put to sleep for priority
2548                 * reasons.
2549                 */
2550                if ((((p->time_slice * (100 - sd->per_cpu_gain) / 100) >
2551                        task_timeslice(smt_curr) || rt_task(p)) &&
2552                        smt_curr->mm && p->mm && !rt_task(smt_curr)) ||
2553                        (smt_curr == smt_rq->idle && smt_rq->nr_running))
2554                                resched_task(smt_curr);
2555        }
2556out_unlock:
2557        for_each_cpu_mask(i, sibling_map)
2558                spin_unlock(&cpu_rq(i)->lock);
2559        return ret;
2560}
2561#else
2562static inline void wake_sleeping_dependent(int this_cpu, runqueue_t *this_rq)
2563{
2564}
2565
2566static inline int dependent_sleeper(int this_cpu, runqueue_t *this_rq)
2567{
2568        return 0;
2569}
2570#endif
2571
2572#if defined(CONFIG_PREEMPT) && defined(CONFIG_DEBUG_PREEMPT)
2573
2574void fastcall add_preempt_count(int val)
2575{
2576        /*
2577         * Underflow?
2578         */
2579        BUG_ON(((int)preempt_count() < 0));
2580        preempt_count() += val;
2581        /*
2582         * Spinlock count overflowing soon?
2583         */
2584        BUG_ON((preempt_count() & PREEMPT_MASK) >= PREEMPT_MASK-10);
2585}
2586EXPORT_SYMBOL(add_preempt_count);
2587
2588void fastcall sub_preempt_count(int val)
2589{
2590        /*
2591         * Underflow?
2592         */
2593        BUG_ON(val > preempt_count());
2594        /*
2595         * Is the spinlock portion underflowing?
2596         */
2597        BUG_ON((val < PREEMPT_MASK) && !(preempt_count() & PREEMPT_MASK));
2598        preempt_count() -= val;
2599}
2600EXPORT_SYMBOL(sub_preempt_count);
2601
2602#endif
2603
2604/*
2605 * schedule() is the main scheduler function.
2606 */
2607asmlinkage void __sched schedule(void)
2608{
2609        long *switch_count;
2610        task_t *prev, *next;
2611        runqueue_t *rq;
2612        prio_array_t *array;
2613        struct list_head *queue;
2614        unsigned long long now;
2615        unsigned long run_time;
2616        int cpu, idx;
2617
2618        /*
2619         * Test if we are atomic.  Since do_exit() needs to call into
2620         * schedule() atomically, we ignore that path for now.
2621         * Otherwise, whine if we are scheduling when we should not be.
2622         */
2623        if (likely(!current->exit_state)) {
2624                if (unlikely(in_atomic())) {
2625                        printk(KERN_ERR "scheduling while atomic: "
2626                                "%s/0x%08x/%d\n",
2627                                current->comm, preempt_count(), current->pid);
2628                        dump_stack();
2629                }
2630        }
2631        profile_hit(SCHED_PROFILING, __builtin_return_address(0));
2632
2633need_resched:
2634        preempt_disable();
2635        prev = current;
2636        release_kernel_lock(prev);
2637need_resched_nonpreemptible:
2638        rq = this_rq();
2639
2640        /*
2641         * The idle thread is not allowed to schedule!
2642         * Remove this check after it has been exercised a bit.
2643         */
2644        if (unlikely(prev == rq->idle) && prev->state != TASK_RUNNING) {
2645                printk(KERN_ERR "bad: scheduling from the idle thread!\n");
2646                dump_stack();
2647        }
2648
2649        schedstat_inc(rq, sched_cnt);
2650        now = sched_clock();
2651        if (likely((long long)(now - prev->timestamp) < NS_MAX_SLEEP_AVG)) {
2652                run_time = now - prev->timestamp;
2653                if (unlikely((long long)(now - prev->timestamp) < 0))
2654                        run_time = 0;
2655        } else
2656                run_time = NS_MAX_SLEEP_AVG;
2657
2658        /*
2659         * Tasks charged proportionately less run_time at high sleep_avg to
2660         * delay them losing their interactive status
2661         */
2662        run_time /= (CURRENT_BONUS(prev) ? : 1);
2663
2664        spin_lock_irq(&rq->lock);
2665
2666        if (unlikely(prev->flags & PF_DEAD))
2667                prev->state = EXIT_DEAD;
2668
2669        switch_count = &prev->nivcsw;
2670        if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
2671                switch_count = &prev->nvcsw;
2672                if (unlikely((prev->state & TASK_INTERRUPTIBLE) &&
2673                                unlikely(signal_pending(prev))))
2674                        prev->state = TASK_RUNNING;
2675                else {
2676                        if (prev->state == TASK_UNINTERRUPTIBLE)
2677                                rq->nr_uninterruptible++;
2678                        deactivate_task(prev, rq);
2679                }
2680        }
2681
2682        cpu = smp_processor_id();
2683        if (unlikely(!rq->nr_running)) {
2684go_idle:
2685                idle_balance(cpu, rq);
2686                if (!rq->nr_running) {
2687                        next = rq->idle;
2688                        rq->expired_timestamp = 0;
2689                        wake_sleeping_dependent(cpu, rq);
2690                        /*
2691                         * wake_sleeping_dependent() might have released
2692                         * the runqueue, so break out if we got new
2693                         * tasks meanwhile:
2694                         */
2695                        if (!rq->nr_running)
2696                                goto switch_tasks;
2697                }
2698        } else {
2699                if (dependent_sleeper(cpu, rq)) {
2700                        next = rq->idle;
2701                        goto switch_tasks;
2702                }
2703                /*
2704                 * dependent_sleeper() releases and reacquires the runqueue
2705                 * lock, hence go into the idle loop if the rq went
2706                 * empty meanwhile:
2707                 */
2708                if (unlikely(!rq->nr_running))
2709                        goto go_idle;
2710        }
2711
2712        array = rq->active;
2713        if (unlikely(!array->nr_active)) {
2714                /*
2715                 * Switch the active and expired arrays.
2716                 */
2717                schedstat_inc(rq, sched_switch);
2718                rq->active = rq->expired;
2719                rq->expired = array;
2720                array = rq->active;
2721                rq->expired_timestamp = 0;
2722                rq->best_expired_prio = MAX_PRIO;
2723        }
2724
2725        idx = sched_find_first_bit(array->bitmap);
2726        queue = array->queue + idx;
2727        next = list_entry(queue->next, task_t, run_list);
2728
2729        if (!rt_task(next) && next->activated > 0) {
2730                unsigned long long delta = now - next->timestamp;
2731                if (unlikely((long long)(now - next->timestamp) < 0))
2732                        delta = 0;
2733
2734                if (next->activated == 1)
2735                        delta = delta * (ON_RUNQUEUE_WEIGHT * 128 / 100) / 128;
2736
2737                array = next->array;
2738                dequeue_task(next, array);
2739                recalc_task_prio(next, next->timestamp + delta);
2740                enqueue_task(next, array);
2741        }
2742        next->activated = 0;
2743switch_tasks:
2744        if (next == rq->idle)
2745                schedstat_inc(rq, sched_goidle);
2746        prefetch(next);
2747        clear_tsk_need_resched(prev);
2748        rcu_qsctr_inc(task_cpu(prev));
2749
2750        update_cpu_clock(prev, rq, now);
2751
2752        prev->sleep_avg -= run_time;
2753        if ((long)prev->sleep_avg <= 0)
2754                prev->sleep_avg = 0;
2755        prev->timestamp = prev->last_ran = now;
2756
2757        sched_info_switch(prev, next);
2758        if (likely(prev != next)) {
2759                next->timestamp = now;
2760                rq->nr_switches++;
2761                rq->curr = next;
2762                ++*switch_count;
2763
2764                prepare_arch_switch(rq, next);
2765                prev = context_switch(rq, prev, next);
2766                barrier();
2767
2768                finish_task_switch(prev);
2769        } else
2770                spin_unlock_irq(&rq->lock);
2771
2772        prev = current;
2773        if (unlikely(reacquire_kernel_lock(prev) < 0))
2774                goto need_resched_nonpreemptible;
2775        preempt_enable_no_resched();
2776        if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
2777                goto need_resched;
2778}
2779
2780EXPORT_SYMBOL(schedule);
2781
2782#ifdef CONFIG_PREEMPT
2783/*
2784 * this is is the entry point to schedule() from in-kernel preemption
2785 * off of preempt_enable.  Kernel preemptions off return from interrupt
2786 * occur there and call schedule directly.
2787 */
2788asmlinkage void __sched preempt_schedule(void)
2789{
2790        struct thread_info *ti = current_thread_info();
2791#ifdef CONFIG_PREEMPT_BKL
2792        struct task_struct *task = current;
2793        int saved_lock_depth;
2794#endif
2795        /*
2796         * If there is a non-zero preempt_count or interrupts are disabled,
2797         * we do not want to preempt the current task.  Just return..
2798         */
2799        if (unlikely(ti->preempt_count || irqs_disabled()))
2800                return;
2801
2802need_resched:
2803        add_preempt_count(PREEMPT_ACTIVE);
2804        /*
2805         * We keep the big kernel semaphore locked, but we
2806         * clear ->lock_depth so that schedule() doesnt
2807         * auto-release the semaphore:
2808         */
2809#ifdef CONFIG_PREEMPT_BKL
2810        saved_lock_depth = task->lock_depth;
2811        task->lock_depth = -1;
2812#endif
2813        schedule();
2814#ifdef CONFIG_PREEMPT_BKL
2815        task->lock_depth = saved_lock_depth;
2816#endif
2817        sub_preempt_count(PREEMPT_ACTIVE);
2818
2819        /* we could miss a preemption opportunity between schedule and now */
2820        barrier();
2821        if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
2822                goto need_resched;
2823}
2824
2825EXPORT_SYMBOL(preempt_schedule);
2826
2827/*
2828 * this is is the entry point to schedule() from kernel preemption
2829 * off of irq context.
2830 * Note, that this is called and return with irqs disabled. This will
2831 * protect us against recursive calling from irq.
2832 */
2833asmlinkage void __sched preempt_schedule_irq(void)
2834{
2835        struct thread_info *ti = current_thread_info();
2836#ifdef CONFIG_PREEMPT_BKL
2837        struct task_struct *task = current;
2838        int saved_lock_depth;
2839#endif
2840        /* Catch callers which need to be fixed*/
2841        BUG_ON(ti->preempt_count || !irqs_disabled());
2842
2843need_resched:
2844        add_preempt_count(PREEMPT_ACTIVE);
2845        /*
2846         * We keep the big kernel semaphore locked, but we
2847         * clear ->lock_depth so that schedule() doesnt
2848         * auto-release the semaphore:
2849         */
2850#ifdef CONFIG_PREEMPT_BKL
2851        saved_lock_depth = task->lock_depth;
2852        task->lock_depth = -1;
2853#endif
2854        local_irq_enable();
2855        schedule();
2856        local_irq_disable();
2857#ifdef CONFIG_PREEMPT_BKL
2858        task->lock_depth = saved_lock_depth;
2859#endif
2860        sub_preempt_count(PREEMPT_ACTIVE);
2861
2862        /* we could miss a preemption opportunity between schedule and now */
2863        barrier();
2864        if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
2865                goto need_resched;
2866}
2867
2868#endif /* CONFIG_PREEMPT */
2869
2870int default_wake_function(wait_queue_t *curr, unsigned mode, int sync, void *key)
2871{
2872        task_t *p = curr->task;
2873        return try_to_wake_up(p, mode, sync);
2874}
2875
2876EXPORT_SYMBOL(default_wake_function);
2877
2878/*
2879 * The core wakeup function.  Non-exclusive wakeups (nr_exclusive == 0) just
2880 * wake everything up.  If it's an exclusive wakeup (nr_exclusive == small +ve
2881 * number) then we wake all the non-exclusive tasks and one exclusive task.
2882 *
2883 * There are circumstances in which we can try to wake a task which has already
2884 * started to run but is not in state TASK_RUNNING.  try_to_wake_up() returns
2885 * zero in this (rare) case, and we handle it by continuing to scan the queue.
2886 */
2887static void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
2888                             int nr_exclusive, int sync, void *key)
2889{
2890        struct list_head *tmp, *next;
2891
2892        list_for_each_safe(tmp, next, &q->task_list) {
2893                wait_queue_t *curr;
2894                unsigned flags;
2895                curr = list_entry(tmp, wait_queue_t, task_list);
2896                flags = curr->flags;
2897                if (curr->func(curr, mode, sync, key) &&
2898                    (flags & WQ_FLAG_EXCLUSIVE) &&
2899                    !--nr_exclusive)
2900                        break;
2901        }
2902}
2903
2904/**
2905 * __wake_up - wake up threads blocked on a waitqueue.
2906 * @q: the waitqueue
2907 * @mode: which threads
2908 * @nr_exclusive: how many wake-one or wake-many threads to wake up
2909 * @key: is directly passed to the wakeup function
2910 */
2911void fastcall __wake_up(wait_queue_head_t *q, unsigned int mode,
2912                                int nr_exclusive, void *key)
2913{
2914        unsigned long flags;
2915
2916        spin_lock_irqsave(&q->lock, flags);
2917        __wake_up_common(q, mode, nr_exclusive, 0, key);
2918        spin_unlock_irqrestore(&q->lock, flags);
2919}
2920
2921EXPORT_SYMBOL(__wake_up);
2922
2923/*
2924 * Same as __wake_up but called with the spinlock in wait_queue_head_t held.
2925 */
2926void fastcall __wake_up_locked(wait_queue_head_t *q, unsigned int mode)
2927{
2928        __wake_up_common(q, mode, 1, 0, NULL);
2929}
2930
2931/**
2932 * __wake_up_sync - wake up threads blocked on a waitqueue.
2933 * @q: the waitqueue
2934 * @mode: which threads
2935 * @nr_exclusive: how many wake-one or wake-many threads to wake up
2936 *
2937 * The sync wakeup differs that the waker knows that it will schedule
2938 * away soon, so while the target thread will be woken up, it will not
2939 * be migrated to another CPU - ie. the two threads are 'synchronized'
2940 * with each other. This can prevent needless bouncing between CPUs.
2941 *
2942 * On UP it can prevent extra preemption.
2943 */
2944void fastcall __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr_exclusive)
2945{
2946        unsigned long flags;
2947        int sync = 1;
2948
2949        if (unlikely(!q))
2950                return;
2951
2952        if (unlikely(!nr_exclusive))
2953                sync = 0;
2954
2955        spin_lock_irqsave(&q->lock, flags);
2956        __wake_up_common(q, mode, nr_exclusive, sync, NULL);
2957        spin_unlock_irqrestore(&q->lock, flags);
2958}
2959EXPORT_SYMBOL_GPL(__wake_up_sync);      /* For internal use only */
2960
2961void fastcall complete(struct completion *x)
2962{
2963        unsigned long flags;
2964
2965        spin_lock_irqsave(&x->wait.lock, flags);
2966        x->done++;
2967        __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
2968                         1, 0, NULL);
2969        spin_unlock_irqrestore(&x->wait.lock, flags);
2970}
2971EXPORT_SYMBOL(complete);
2972
2973void fastcall complete_all(struct completion *x)
2974{
2975        unsigned long flags;
2976
2977        spin_lock_irqsave(&x->wait.lock, flags);
2978        x->done += UINT_MAX/2;
2979        __wake_up_common(&x->wait, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE,
2980                         0, 0, NULL);
2981        spin_unlock_irqrestore(&x->wait.lock, flags);
2982}
2983EXPORT_SYMBOL(complete_all);
2984
2985void fastcall __sched wait_for_completion(struct completion *x)
2986{
2987        might_sleep();
2988        spin_lock_irq(&x->wait.lock);
2989        if (!x->done) {
2990                DECLARE_WAITQUEUE(wait, current);
2991
2992                wait.flags |= WQ_FLAG_EXCLUSIVE;
2993                __add_wait_queue_tail(&x->wait, &wait);
2994                do {
2995                        __set_current_state(TASK_UNINTERRUPTIBLE);
2996                        spin_unlock_irq(&x->wait.lock);
2997                        schedule();
2998                        spin_lock_irq(&x->wait.lock);
2999                } while (!x->done);
3000                __remove_wait_queue(&x->wait, &wait);
3001        }
3002        x->done--;
3003        spin_unlock_irq(&x->wait.lock);
3004}
3005EXPORT_SYMBOL(wait_for_completion);
3006
3007unsigned long fastcall __sched
3008wait_for_completion_timeout(struct completion *x, unsigned long timeout)
3009{
3010        might_sleep();
3011
3012        spin_lock_irq(&x->wait.lock);
3013        if (!x->done) {
3014                DECLARE_WAITQUEUE(wait, current);
3015
3016                wait.flags |= WQ_FLAG_EXCLUSIVE;
3017                __add_wait_queue_tail(&x->wait, &wait);
3018                do {
3019                        __set_current_state(TASK_UNINTERRUPTIBLE);
3020                        spin_unlock_irq(&x->wait.lock);
3021                        timeout = schedule_timeout(timeout);
3022                        spin_lock_irq(&x->wait.lock);
3023                        if (!timeout) {
3024                                __remove_wait_queue(&x->wait, &wait);
3025                                goto out;
3026                        }
3027                } while (!x->done);
3028                __remove_wait_queue(&x->wait, &wait);
3029        }
3030        x->done--;
3031out:
3032        spin_unlock_irq(&x->wait.lock);
3033        return timeout;
3034}
3035EXPORT_SYMBOL(wait_for_completion_timeout);
3036
3037int fastcall __sched wait_for_completion_interruptible(struct completion *x)
3038{
3039        int ret = 0;
3040
3041        might_sleep();
3042
3043        spin_lock_irq(&x->wait.lock);
3044        if (!x->done) {
3045                DECLARE_WAITQUEUE(wait, current);
3046
3047                wait.flags |= WQ_FLAG_EXCLUSIVE;
3048                __add_wait_queue_tail(&x->wait, &wait);
3049                do {
3050                        if (signal_pending(current)) {
3051                                ret = -ERESTARTSYS;
3052                                __remove_wait_queue(&x->wait, &wait);
3053                                goto out;
3054                        }
3055                        __set_current_state(TASK_INTERRUPTIBLE);
3056                        spin_unlock_irq(&x->wait.lock);
3057                        schedule();
3058                        spin_lock_irq(&x->wait.lock);
3059                } while (!x->done);
3060                __remove_wait_queue(&x->wait, &wait);
3061        }
3062        x->done--;
3063out:
3064        spin_unlock_irq(&x->wait.lock);
3065
3066        return ret;
3067}
3068EXPORT_SYMBOL(wait_for_completion_interruptible);
3069
3070unsigned long fastcall __sched
3071wait_for_completion_interruptible_timeout(struct completion *x,
3072                                          unsigned long timeout)
3073{
3074        might_sleep();
3075
3076        spin_lock_irq(&x->wait.lock);
3077        if (!x->done) {
3078                DECLARE_WAITQUEUE(wait, current);
3079
3080                wait.flags |= WQ_FLAG_EXCLUSIVE;
3081                __add_wait_queue_tail(&x->wait, &wait);
3082                do {
3083                        if (signal_pending(current)) {
3084                                timeout = -ERESTARTSYS;
3085                                __remove_wait_queue(&x->wait, &wait);
3086                                goto out;
3087                        }
3088                        __set_current_state(TASK_INTERRUPTIBLE);
3089                        spin_unlock_irq(&x->wait.lock);
3090                        timeout = schedule_timeout(timeout);
3091                        spin_lock_irq(&x->wait.lock);
3092                        if (!timeout) {
3093                                __remove_wait_queue(&x->wait, &wait);
3094                                goto out;
3095                        }
3096                } while (!x->done);
3097                __remove_wait_queue(&x->wait, &wait);
3098        }
3099        x->done--;
3100out:
3101        spin_unlock_irq(&x->wait.lock);
3102        return timeout;
3103}
3104EXPORT_SYMBOL(wait_for_completion_interruptible_timeout);
3105
3106
3107#define SLEEP_ON_VAR                                    \
3108        unsigned long flags;                            \
3109        wait_queue_t wait;                              \
3110        init_waitqueue_entry(&wait, current);
3111
3112#define SLEEP_ON_HEAD                                   \
3113        spin_lock_irqsave(&q->lock,flags);              \
3114        __add_wait_queue(q, &wait);                     \
3115        spin_unlock(&q->lock);
3116
3117#define SLEEP_ON_TAIL                                   \
3118        spin_lock_irq(&q->lock);                        \
3119        __remove_wait_queue(q, &wait);                  \
3120        spin_unlock_irqrestore(&q->lock, flags);
3121
3122void fastcall __sched interruptible_sleep_on(wait_queue_head_t *q)
3123{
3124        SLEEP_ON_VAR
3125
3126        current->state = TASK_INTERRUPTIBLE;
3127
3128        SLEEP_ON_HEAD
3129        schedule();
3130        SLEEP_ON_TAIL
3131}
3132
3133EXPORT_SYMBOL(interruptible_sleep_on);
3134
3135long fastcall __sched interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
3136{
3137        SLEEP_ON_VAR
3138
3139        current->state = TASK_INTERRUPTIBLE;
3140
3141        SLEEP_ON_HEAD
3142        timeout = schedule_timeout(timeout);
3143        SLEEP_ON_TAIL
3144
3145        return timeout;
3146}
3147
3148EXPORT_SYMBOL(interruptible_sleep_on_timeout);
3149
3150void fastcall __sched sleep_on(wait_queue_head_t *q)
3151{
3152        SLEEP_ON_VAR
3153
3154        current->state = TASK_UNINTERRUPTIBLE;
3155
3156        SLEEP_ON_HEAD
3157        schedule();
3158        SLEEP_ON_TAIL
3159}
3160
3161EXPORT_SYMBOL(sleep_on);
3162
3163long fastcall __sched sleep_on_timeout(wait_queue_head_t *q, long timeout)
3164{
3165        SLEEP_ON_VAR
3166
3167        current->state = TASK_UNINTERRUPTIBLE;
3168
3169        SLEEP_ON_HEAD
3170        timeout = schedule_timeout(timeout);
3171        SLEEP_ON_TAIL
3172
3173        return timeout;
3174}
3175
3176EXPORT_SYMBOL(sleep_on_timeout);
3177
3178void set_user_nice(task_t *p, long nice)
3179{
3180        unsigned long flags;
3181        prio_array_t *array;
3182        runqueue_t *rq;
3183        int old_prio, new_prio, delta;
3184
3185        if (TASK_NICE(p) == nice || nice < -20 || nice > 19)
3186                return;
3187        /*
3188         * We have to be careful, if called from sys_setpriority(),
3189         * the task might be in the middle of scheduling on another CPU.
3190         */
3191        rq = task_rq_lock(p, &flags);
3192        /*
3193         * The RT priorities are set via sched_setscheduler(), but we still
3194         * allow the 'normal' nice value to be set - but as expected
3195         * it wont have any effect on scheduling until the task is
3196         * not SCHED_NORMAL:
3197         */
3198        if (rt_task(p)) {
3199                p->static_prio = NICE_TO_PRIO(nice);
3200                goto out_unlock;
3201        }
3202        array = p->array;
3203        if (array)
3204                dequeue_task(p, array);
3205
3206        old_prio = p->prio;
3207        new_prio = NICE_TO_PRIO(nice);
3208        delta = new_prio - old_prio;
3209        p->static_prio = NICE_TO_PRIO(nice);
3210        p->prio += delta;
3211
3212        if (array) {
3213                enqueue_task(p, array);
3214                /*
3215                 * If the task increased its priority or is running and
3216                 * lowered its priority, then reschedule its CPU:
3217                 */
3218                if (delta < 0 || (delta > 0 && task_running(rq, p)))
3219                        resched_task(rq->curr);
3220        }
3221out_unlock:
3222        task_rq_unlock(rq, &flags);
3223}
3224
3225EXPORT_SYMBOL(set_user_nice);
3226
3227/*
3228 * can_nice - check if a task can reduce its nice value
3229 * @p: task
3230 * @nice: nice value
3231 */
3232int can_nice(const task_t *p, const int nice)
3233{
3234        /* convert nice value [19,-20] to rlimit style value [0,39] */
3235        int nice_rlim = 19 - nice;
3236        return (nice_rlim <= p->signal->rlim[RLIMIT_NICE].rlim_cur ||
3237                capable(CAP_SYS_NICE));
3238}
3239
3240#ifdef __ARCH_WANT_SYS_NICE
3241
3242/*
3243 * sys_nice - change the priority of the current process.
3244 * @increment: priority increment
3245 *
3246 * sys_setpriority is a more generic, but much slower function that
3247 * does similar things.
3248 */
3249asmlinkage long sys_nice(int increment)
3250{
3251        int retval;
3252        long nice;
3253
3254        /*
3255         * Setpriority might change our priority at the same moment.
3256         * We don't have to worry. Conceptually one call occurs first
3257         * and we have a single winner.
3258         */
3259        if (increment < -40)
3260                increment = -40;
3261        if (increment > 40)
3262                increment = 40;
3263
3264        nice = PRIO_TO_NICE(current->static_prio) + increment;
3265        if (nice < -20)
3266                nice = -20;
3267        if (nice > 19)
3268                nice = 19;
3269
3270        if (increment < 0 && !can_nice(current, nice))
3271                return -EPERM;
3272
3273        retval = security_task_setnice(current, nice);
3274        if (retval)
3275                return retval;
3276
3277        set_user_nice(current, nice);
3278        return 0;
3279}
3280
3281#endif
3282
3283/**
3284 * task_prio - return the priority value of a given task.
3285 * @p: the task in question.
3286 *
3287 * This is the priority value as seen by users in /proc.
3288 * RT tasks are offset by -200. Normal tasks are centered
3289 * around 0, value goes from -16 to +15.
3290 */
3291int task_prio(const task_t *p)
3292{
3293        return p->prio - MAX_RT_PRIO;
3294}
3295
3296/**
3297 * task_nice - return the nice value of a given task.
3298 * @p: the task in question.
3299 */
3300int task_nice(const task_t *p)
3301{
3302        return TASK_NICE(p);
3303}
3304
3305/*
3306 * The only users of task_nice are binfmt_elf and binfmt_elf32.
3307 * binfmt_elf is no longer modular, but binfmt_elf32 still is.
3308 * Therefore, task_nice is needed if there is a compat_mode.
3309 */
3310#ifdef CONFIG_COMPAT
3311EXPORT_SYMBOL_GPL(task_nice);
3312#endif
3313
3314/**
3315 * idle_cpu - is a given cpu idle currently?
3316 * @cpu: the processor in question.
3317 */
3318int idle_cpu(int cpu)
3319{
3320        return cpu_curr(cpu) == cpu_rq(cpu)->idle;
3321}
3322
3323EXPORT_SYMBOL_GPL(idle_cpu);
3324
3325/**
3326 * idle_task - return the idle task for a given cpu.
3327 * @cpu: the processor in question.
3328 */
3329task_t *idle_task(int cpu)
3330{
3331        return cpu_rq(cpu)->idle;
3332}
3333
3334/**
3335 * find_process_by_pid - find a process with a matching PID value.
3336 * @pid: the pid in question.
3337 */
3338static inline task_t *find_process_by_pid(pid_t pid)
3339{
3340        return pid ? find_task_by_pid(pid) : current;
3341}
3342
3343/* Actually do priority change: must hold rq lock. */
3344static void __setscheduler(struct task_struct *p, int policy, int prio)
3345{
3346        BUG_ON(p->array);
3347        p->policy = policy;
3348        p->rt_priority = prio;
3349        if (policy != SCHED_NORMAL)
3350                p->prio = MAX_USER_RT_PRIO-1 - p->rt_priority;
3351        else
3352                p->prio = p->static_prio;
3353}
3354
3355/**
3356 * sched_setscheduler - change the scheduling policy and/or RT priority of
3357 * a thread.
3358 * @p: the task in question.
3359 * @policy: new policy.
3360 * @param: structure containing the new RT priority.
3361 */
3362int sched_setscheduler(struct task_struct *p, int policy, struct sched_param *param)
3363{
3364        int retval;
3365        int oldprio, oldpolicy = -1;
3366        prio_array_t *array;
3367        unsigned long flags;
3368        runqueue_t *rq;
3369
3370recheck:
3371        /* double check policy once rq lock held */
3372        if (policy < 0)
3373                policy = oldpolicy = p->policy;
3374        else if (policy != SCHED_FIFO && policy != SCHED_RR &&
3375                                policy != SCHED_NORMAL)
3376                        return -EINVAL;
3377        /*
3378         * Valid priorities for SCHED_FIFO and SCHED_RR are
3379         * 1..MAX_USER_RT_PRIO-1, valid priority for SCHED_NORMAL is 0.
3380         */
3381        if (param->sched_priority < 0 ||
3382            param->sched_priority > MAX_USER_RT_PRIO-1)
3383                return -EINVAL;
3384        if ((policy == SCHED_NORMAL) != (param->sched_priority == 0))
3385                return -EINVAL;
3386
3387        if ((policy == SCHED_FIFO || policy == SCHED_RR) &&
3388            param->sched_priority > p->signal->rlim[RLIMIT_RTPRIO].rlim_cur &&
3389            !capable(CAP_SYS_NICE))
3390                return -EPERM;
3391        if ((current->euid != p->euid) && (current->euid != p->uid) &&
3392            !capable(CAP_SYS_NICE))
3393                return -EPERM;
3394
3395        retval = security_task_setscheduler(p, policy, param);
3396        if (retval)
3397                return retval;
3398        /*
3399         * To be able to change p->policy safely, the apropriate
3400         * runqueue lock must be held.
3401         */
3402        rq = task_rq_lock(p, &flags);
3403        /* recheck policy now with rq lock held */
3404        if (unlikely(oldpolicy != -1 && oldpolicy != p->policy)) {
3405                policy = oldpolicy = -1;
3406                task_rq_unlock(rq, &flags);
3407                goto recheck;
3408        }
3409        array = p->array;
3410        if (array)
3411                deactivate_task(p, rq);
3412        oldprio = p->prio;
3413        __setscheduler(p, policy, param->sched_priority);
3414        if (array) {
3415                __activate_task(p, rq);
3416                /*
3417                 * Reschedule if we are currently running on this runqueue and
3418                 * our priority decreased, or if we are not currently running on
3419                 * this runqueue and our priority is higher than the current's
3420                 */
3421                if (task_running(rq, p)) {
3422                        if (p->prio > oldprio)
3423                                resched_task(rq->curr);
3424                } else if (TASK_PREEMPTS_CURR(p, rq))
3425                        resched_task(rq->curr);
3426        }
3427        task_rq_unlock(rq, &flags);
3428        return 0;
3429}
3430EXPORT_SYMBOL_GPL(sched_setscheduler);
3431
3432static int do_sched_setscheduler(pid_t pid, int policy, struct sched_param __user *param)
3433{
3434        int retval;
3435        struct sched_param lparam;
3436        struct task_struct *p;
3437
3438        if (!param || pid < 0)
3439                return -EINVAL;
3440        if (copy_from_user(&lparam, param, sizeof(struct sched_param)))
3441                return -EFAULT;
3442        read_lock_irq(&tasklist_lock);
3443        p = find_process_by_pid(pid);
3444        if (!p) {
3445                read_unlock_irq(&tasklist_lock);
3446                return -ESRCH;
3447        }
3448        retval = sched_setscheduler(p, policy, &lparam);
3449        read_unlock_irq(&tasklist_lock);
3450        return retval;
3451}
3452
3453/**
3454 * sys_sched_setscheduler - set/change the scheduler policy and RT priority
3455 * @pid: the pid in question.
3456 * @policy: new policy.
3457 * @param: structure containing the new RT priority.
3458 */
3459asmlinkage long sys_sched_setscheduler(pid_t pid, int policy,
3460                                       struct sched_param __user *param)
3461{
3462        return do_sched_setscheduler(pid, policy, param);
3463}
3464
3465/**
3466 * sys_sched_setparam - set/change the RT priority of a thread
3467 * @pid: the pid in question.
3468 * @param: structure containing the new RT priority.
3469 */
3470asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param)
3471{
3472        return do_sched_setscheduler(pid, -1, param);
3473}
3474
3475/**
3476 * sys_sched_getscheduler - get the policy (scheduling class) of a thread
3477 * @pid: the pid in question.
3478 */
3479asmlinkage long sys_sched_getscheduler(pid_t pid)
3480{
3481        int retval = -EINVAL;
3482        task_t *p;
3483
3484        if (pid < 0)
3485                goto out_nounlock;
3486
3487        retval = -ESRCH;
3488        read_lock(&tasklist_lock);
3489        p = find_process_by_pid(pid);
3490        if (p) {
3491                retval = security_task_getscheduler(p);
3492                if (!retval)
3493                        retval = p->policy;
3494        }
3495        read_unlock(&tasklist_lock);
3496
3497out_nounlock:
3498        return retval;
3499}
3500
3501/**
3502 * sys_sched_getscheduler - get the RT priority of a thread
3503 * @pid: the pid in question.
3504 * @param: structure containing the RT priority.
3505 */
3506asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param)
3507{
3508        struct sched_param lp;
3509        int retval = -EINVAL;
3510        task_t *p;
3511
3512        if (!param || pid < 0)
3513                goto out_nounlock;
3514
3515        read_lock(&tasklist_lock);
3516        p = find_process_by_pid(pid);
3517        retval = -ESRCH;
3518        if (!p)
3519                goto out_unlock;
3520
3521        retval = security_task_getscheduler(p);
3522        if (retval)
3523                goto out_unlock;
3524
3525        lp.sched_priority = p->rt_priority;
3526        read_unlock(&tasklist_lock);
3527
3528        /*
3529         * This one might sleep, we cannot do it with a spinlock held ...
3530         */
3531        retval = copy_to_user(param, &lp, sizeof(*param)) ? -EFAULT : 0;
3532
3533out_nounlock:
3534        return retval;
3535
3536out_unlock:
3537        read_unlock(&tasklist_lock);
3538        return retval;
3539}
3540
3541long sched_setaffinity(pid_t pid, cpumask_t new_mask)
3542{
3543        task_t *p;
3544        int retval;
3545        cpumask_t cpus_allowed;
3546
3547        lock_cpu_hotplug();
3548        read_lock(&tasklist_lock);
3549
3550        p = find_process_by_pid(pid);
3551        if (!p) {
3552                read_unlock(&tasklist_lock);
3553                unlock_cpu_hotplug();
3554                return -ESRCH;
3555        }
3556
3557        /*
3558         * It is not safe to call set_cpus_allowed with the
3559         * tasklist_lock held.  We will bump the task_struct's
3560         * usage count and then drop tasklist_lock.
3561         */
3562        get_task_struct(p);
3563        read_unlock(&tasklist_lock);
3564
3565        retval = -EPERM;
3566        if ((current->euid != p->euid) && (current->euid != p->uid) &&
3567                        !capable(CAP_SYS_NICE))
3568                goto out_unlock;
3569
3570        cpus_allowed = cpuset_cpus_allowed(p);
3571        cpus_and(new_mask, new_mask, cpus_allowed);
3572        retval = set_cpus_allowed(p, new_mask);
3573
3574out_unlock:
3575        put_task_struct(p);
3576        unlock_cpu_hotplug();
3577        return retval;
3578}
3579
3580static int get_user_cpu_mask(unsigned long __user *user_mask_ptr, unsigned len,
3581                             cpumask_t *new_mask)
3582{
3583        if (len < sizeof(cpumask_t)) {
3584                memset(new_mask, 0, sizeof(cpumask_t));
3585        } else if (len > sizeof(cpumask_t)) {
3586                len = sizeof(cpumask_t);
3587        }
3588        return copy_from_user(new_mask, user_mask_ptr, len) ? -EFAULT : 0;
3589}
3590
3591/**
3592 * sys_sched_setaffinity - set the cpu affinity of a process
3593 * @pid: pid of the process
3594 * @len: length in bytes of the bitmask pointed to by user_mask_ptr
3595 * @user_mask_ptr: user-space pointer to the new cpu mask
3596 */
3597asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len,
3598                                      unsigned long __user *user_mask_ptr)
3599{
3600        cpumask_t new_mask;
3601        int retval;
3602
3603        retval = get_user_cpu_mask(user_mask_ptr, len, &new_mask);
3604        if (retval)
3605                return retval;
3606
3607        return sched_setaffinity(pid, new_mask);
3608}
3609
3610/*
3611 * Represents all cpu's present in the system
3612 * In systems capable of hotplug, this map could dynamically grow
3613 * as new cpu's are detected in the system via any platform specific
3614 * method, such as ACPI for e.g.
3615 */
3616
3617cpumask_t cpu_present_map;
3618EXPORT_SYMBOL(cpu_present_map);
3619
3620#ifndef CONFIG_SMP
3621cpumask_t cpu_online_map = CPU_MASK_ALL;
3622cpumask_t cpu_possible_map = CPU_MASK_ALL;
3623#endif
3624
3625long sched_getaffinity(pid_t pid, cpumask_t *mask)
3626{
3627        int retval;
3628        task_t *p;
3629
3630        lock_cpu_hotplug();
3631        read_lock(&tasklist_lock);
3632
3633        retval = -ESRCH;
3634        p = find_process_by_pid(pid);
3635        if (!p)
3636                goto out_unlock;
3637
3638        retval = 0;
3639        cpus_and(*mask, p->cpus_allowed, cpu_possible_map);
3640
3641out_unlock:
3642        read_unlock(&tasklist_lock);
3643        unlock_cpu_hotplug();
3644        if (retval)
3645                return retval;
3646
3647        return 0;
3648}
3649
3650/**
3651 * sys_sched_getaffinity - get the cpu affinity of a process
3652 * @pid: pid of the process
3653 * @len: length in bytes of the bitmask pointed to by user_mask_ptr
3654 * @user_mask_ptr: user-space pointer to hold the current cpu mask
3655 */
3656asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len,
3657                                      unsigned long __user *user_mask_ptr)
3658{
3659        int ret;
3660        cpumask_t mask;
3661
3662        if (len < sizeof(cpumask_t))
3663                return -EINVAL;
3664
3665        ret = sched_getaffinity(pid, &mask);
3666        if (ret < 0)
3667                return ret;
3668
3669        if (copy_to_user(user_mask_ptr, &mask, sizeof(cpumask_t)))
3670                return -EFAULT;
3671
3672        return sizeof(cpumask_t);
3673}
3674
3675/**
3676 * sys_sched_yield - yield the current processor to other threads.
3677 *
3678 * this function yields the current CPU by moving the calling thread
3679 * to the expired array. If there are no other threads running on this
3680 * CPU then this function will return.
3681 */
3682asmlinkage long sys_sched_yield(void)
3683{
3684        runqueue_t *rq = this_rq_lock();
3685        prio_array_t *array = current->array;
3686        prio_array_t *target = rq->expired;
3687
3688        schedstat_inc(rq, yld_cnt);
3689        /*
3690         * We implement yielding by moving the task into the expired
3691         * queue.
3692         *
3693         * (special rule: RT tasks will just roundrobin in the active
3694         *  array.)
3695         */
3696        if (rt_task(current))
3697                target = rq->active;
3698
3699        if (current->array->nr_active == 1) {
3700                schedstat_inc(rq, yld_act_empty);
3701                if (!rq->expired->nr_active)
3702                        schedstat_inc(rq, yld_both_empty);
3703        } else if (!rq->expired->nr_active)
3704                schedstat_inc(rq, yld_exp_empty);
3705
3706        if (array != target) {
3707                dequeue_task(current, array);
3708                enqueue_task(current, target);
3709        } else
3710                /*
3711                 * requeue_task is cheaper so perform that if possible.
3712                 */
3713                requeue_task(current, array);
3714
3715        /*
3716         * Since we are going to call schedule() anyway, there's
3717         * no need to preempt or enable interrupts:
3718         */
3719        __release(rq->lock);
3720        _raw_spin_unlock(&rq->lock);
3721        preempt_enable_no_resched();
3722
3723        schedule();
3724
3725        return 0;
3726}
3727
3728static inline void __cond_resched(void)
3729{
3730        do {
3731                add_preempt_count(PREEMPT_ACTIVE);
3732                schedule();
3733                sub_preempt_count(PREEMPT_ACTIVE);
3734        } while (need_resched());
3735}
3736
3737int __sched cond_resched(void)
3738{
3739        if (need_resched()) {
3740                __cond_resched();
3741                return 1;
3742        }
3743        return 0;
3744}
3745
3746EXPORT_SYMBOL(cond_resched);
3747
3748/*
3749 * cond_resched_lock() - if a reschedule is pending, drop the given lock,
3750 * call schedule, and on return reacquire the lock.
3751 *
3752 * This works OK both with and without CONFIG_PREEMPT.  We do strange low-level
3753 * operations here to prevent schedule() from being called twice (once via
3754 * spin_unlock(), once by hand).
3755 */
3756int cond_resched_lock(spinlock_t * lock)
3757{
3758        int ret = 0;
3759
3760        if (need_lockbreak(lock)) {
3761                spin_unlock(lock);
3762                cpu_relax();
3763                ret = 1;
3764                spin_lock(lock);
3765        }
3766        if (need_resched()) {
3767                _raw_spin_unlock(lock);
3768                preempt_enable_no_resched();
3769                __cond_resched();
3770                ret = 1;
3771                spin_lock(lock);
3772        }
3773        return ret;
3774}
3775
3776EXPORT_SYMBOL(cond_resched_lock);
3777
3778int __sched cond_resched_softirq(void)
3779{
3780        BUG_ON(!in_softirq());
3781
3782        if (need_resched()) {
3783                __local_bh_enable();
3784                __cond_resched();
3785                local_bh_disable();
3786                return 1;
3787        }
3788        return 0;
3789}
3790
3791EXPORT_SYMBOL(cond_resched_softirq);
3792
3793
3794/**
3795 * yield - yield the current processor to other threads.
3796 *
3797 * this is a shortcut for kernel-space yielding - it marks the
3798 * thread runnable and calls sys_sched_yield().
3799 */
3800void __sched yield(void)
3801{
3802        set_current_state(TASK_RUNNING);
3803        sys_sched_yield();
3804}
3805
3806EXPORT_SYMBOL(yield);
3807
3808/*
3809 * This task is about to go to sleep on IO.  Increment rq->nr_iowait so
3810 * that process accounting knows that this is a task in IO wait state.
3811 *
3812 * But don't do that if it is a deliberate, throttling IO wait (this task
3813 * has set its backing_dev_info: the queue against which it should throttle)
3814 */
3815void __sched io_schedule(void)
3816{
3817        struct runqueue *rq = &per_cpu(runqueues, _smp_processor_id());
3818
3819        atomic_inc(&rq->nr_iowait);
3820        schedule();
3821        atomic_dec(&rq->nr_iowait);
3822}
3823
3824EXPORT_SYMBOL(io_schedule);
3825
3826long __sched io_schedule_timeout(long timeout)
3827{
3828        struct runqueue *rq = &per_cpu(runqueues, _smp_processor_id());
3829        long ret;
3830
3831        atomic_inc(&rq->nr_iowait);
3832        ret = schedule_timeout(timeout);
3833        atomic_dec(&rq->nr_iowait);
3834        return ret;
3835}
3836
3837/**
3838 * sys_sched_get_priority_max - return maximum RT priority.
3839 * @policy: scheduling class.
3840 *
3841 * this syscall returns the maximum rt_priority that can be used
3842 * by a given scheduling class.
3843 */
3844asmlinkage long sys_sched_get_priority_max(int policy)
3845{
3846        int ret = -EINVAL;
3847
3848        switch (policy) {
3849        case SCHED_FIFO:
3850        case SCHED_RR:
3851                ret = MAX_USER_RT_PRIO-1;
3852                break;
3853        case SCHED_NORMAL:
3854                ret = 0;
3855                break;
3856        }
3857        return ret;
3858}
3859
3860/**
3861 * sys_sched_get_priority_min - return minimum RT priority.
3862 * @policy: scheduling class.
3863 *
3864 * this syscall returns the minimum rt_priority that can be used
3865 * by a given scheduling class.
3866 */
3867asmlinkage long sys_sched_get_priority_min(int policy)
3868{
3869        int ret = -EINVAL;
3870
3871        switch (policy) {
3872        case SCHED_FIFO:
3873        case SCHED_RR:
3874                ret = 1;
3875                break;
3876        case SCHED_NORMAL:
3877                ret = 0;
3878        }
3879        return ret;
3880}
3881
3882/**
3883 * sys_sched_rr_get_interval - return the default timeslice of a process.
3884 * @pid: pid of the process.
3885 * @interval: userspace pointer to the timeslice value.
3886 *
3887 * this syscall writes the default timeslice value of a given process
3888 * into the user-space timespec buffer. A value of '0' means infinity.
3889 */
3890asmlinkage
3891long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval)
3892{
3893        int retval = -EINVAL;
3894        struct timespec t;
3895        task_t *p;
3896
3897        if (pid < 0)
3898                goto out_nounlock;
3899
3900        retval = -ESRCH;
3901        read_lock(&tasklist_lock);
3902        p = find_process_by_pid(pid);
3903        if (!p)
3904                goto out_unlock;
3905
3906        retval = security_task_getscheduler(p);
3907        if (retval)
3908                goto out_unlock;
3909
3910        jiffies_to_timespec(p->policy & SCHED_FIFO ?
3911                                0 : task_timeslice(p), &t);
3912        read_unlock(&tasklist_lock);
3913        retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0;
3914out_nounlock:
3915        return retval;
3916out_unlock:
3917        read_unlock(&tasklist_lock);
3918        return retval;
3919}
3920
3921static inline struct task_struct *eldest_child(struct task_struct *p)
3922{
3923        if (list_empty(&p->children)) return NULL;
3924        return list_entry(p->children.next,struct task_struct,sibling);
3925}
3926
3927static inline struct task_struct *older_sibling(struct task_struct *p)
3928{
3929        if (p->sibling.prev==&p->parent->children) return NULL;
3930        return list_entry(p->sibling.prev,struct task_struct,sibling);
3931}
3932
3933static inline struct task_struct *younger_sibling(struct task_struct *p)
3934{
3935        if (p->sibling.next==&p->parent->children) return NULL;
3936        return list_entry(p->sibling.next,struct task_struct,sibling);
3937}
3938
3939static void show_task(task_t * p)
3940{
3941        task_t *relative;
3942        unsigned state;
3943        unsigned long free = 0;
3944        static const char *stat_nam[] = { "R", "S", "D", "T", "t", "Z", "X" };
3945
3946        printk("%-13.13s ", p->comm);
3947        state = p->state ? __ffs(p->state) + 1 : 0;
3948        if (state < ARRAY_SIZE(stat_nam))
3949                printk(stat_nam[state]);
3950        else
3951                printk("?");
3952#if (BITS_PER_LONG == 32)
3953        if (state == TASK_RUNNING)
3954                printk(" running ");
3955        else
3956                printk(" %08lX ", thread_saved_pc(p));
3957#else
3958        if (state == TASK_RUNNING)
3959                printk("  running task   ");
3960        else
3961                printk(" %016lx ", thread_saved_pc(p));
3962#endif
3963#ifdef CONFIG_DEBUG_STACK_USAGE
3964        {
3965                unsigned long * n = (unsigned long *) (p->thread_info+1);
3966                while (!*n)
3967                        n++;
3968                free = (unsigned long) n - (unsigned long)(p->thread_info+1);
3969        }
3970#endif
3971        printk("%5lu %5d %6d ", free, p->pid, p->parent->pid);
3972        if ((relative = eldest_child(p)))
3973                printk("%5d ", relative->pid);
3974        else
3975                printk("      ");
3976        if ((relative = younger_sibling(p)))
3977                printk("%7d", relative->pid);
3978        else
3979                printk("       ");
3980        if ((relative = older_sibling(p)))
3981                printk(" %5d", relative->pid);
3982        else
3983                printk("      ");
3984        if (!p->mm)
3985                printk(" (L-TLB)\n");
3986        else
3987                printk(" (NOTLB)\n");
3988
3989        if (state != TASK_RUNNING)
3990                show_stack(p, NULL);
3991}
3992
3993void show_state(void)
3994{
3995        task_t *g, *p;
3996
3997#if (BITS_PER_LONG == 32)
3998        printk("\n"
3999               "                                               sibling\n");
4000        printk("  task             PC      pid father child younger older\n");
4001#else
4002        printk("\n"
4003               "                                                       sibling\n");
4004        printk("  task                 PC          pid father child younger older\n");
4005#endif
4006        read_lock(&tasklist_lock);
4007        do_each_thread(g, p) {
4008                /*
4009                 * reset the NMI-timeout, listing all files on a slow
4010                 * console might take alot of time:
4011                 */
4012                touch_nmi_watchdog();
4013                show_task(p);
4014        } while_each_thread(g, p);
4015
4016        read_unlock(&tasklist_lock);
4017}
4018
4019void __devinit init_idle(task_t *idle, int cpu)
4020{
4021        runqueue_t *rq = cpu_rq(cpu);
4022        unsigned long flags;
4023
4024        idle->sleep_avg = 0;
4025        idle->array = NULL;
4026        idle->prio = MAX_PRIO;
4027        idle->state = TASK_RUNNING;
4028        idle->cpus_allowed = cpumask_of_cpu(cpu);
4029        set_task_cpu(idle, cpu);
4030
4031        spin_lock_irqsave(&rq->lock, flags);
4032        rq->curr = rq->idle = idle;
4033        set_tsk_need_resched(idle);
4034        spin_unlock_irqrestore(&rq->lock, flags);
4035
4036        /* Set the preempt count _outside_ the spinlocks! */
4037#if defined(CONFIG_PREEMPT) && !defined(CONFIG_PREEMPT_BKL)
4038        idle->thread_info->preempt_count = (idle->lock_depth >= 0);
4039#else
4040        idle->thread_info->preempt_count = 0;
4041#endif
4042}
4043
4044/*
4045 * In a system that switches off the HZ timer nohz_cpu_mask
4046 * indicates which cpus entered this state. This is used
4047 * in the rcu update to wait only for active cpus. For system
4048 * which do not switch off the HZ timer nohz_cpu_mask should
4049 * always be CPU_MASK_NONE.
4050 */
4051cpumask_t nohz_cpu_mask = CPU_MASK_NONE;
4052
4053#ifdef CONFIG_SMP
4054/*
4055 * This is how migration works:
4056 *
4057 * 1) we queue a migration_req_t structure in the source CPU's
4058 *    runqueue and wake up that CPU's migration thread.
4059 * 2) we down() the locked semaphore => thread blocks.
4060 * 3) migration thread wakes up (implicitly it forces the migrated
4061 *    thread off the CPU)
4062 * 4) it gets the migration request and checks whether the migrated
4063 *    task is still in the wrong runqueue.
4064 * 5) if it's in the wrong runqueue then the migration thread removes
4065 *    it and puts it into the right queue.
4066 * 6) migration thread up()s the semaphore.
4067 * 7) we wake up and the migration is done.
4068 */
4069
4070/*
4071 * Change a given task's CPU affinity. Migrate the thread to a
4072 * proper CPU and schedule it away if the CPU it's executing on
4073 * is removed from the allowed bitmask.
4074 *
4075 * NOTE: the caller must have a valid reference to the task, the
4076 * task must not exit() & deallocate itself prematurely.  The
4077 * call is not atomic; no spinlocks may be held.
4078 */
4079int set_cpus_allowed(task_t *p, cpumask_t new_mask)
4080{
4081        unsigned long flags;
4082        int ret = 0;
4083        migration_req_t req;
4084        runqueue_t *rq;
4085
4086        rq = task_rq_lock(p, &flags);
4087        if (!cpus_intersects(new_mask, cpu_online_map)) {
4088                ret = -EINVAL;
4089                goto out;
4090        }
4091
4092        p->cpus_allowed = new_mask;
4093        /* Can the task run on the task's current CPU? If so, we're done */
4094        if (cpu_isset(task_cpu(p), new_mask))
4095                goto out;
4096
4097        if (migrate_task(p, any_online_cpu(new_mask), &req)) {
4098                /* Need help from migration thread: drop lock and wait. */
4099                task_rq_unlock(rq, &flags);
4100                wake_up_process(rq->migration_thread);
4101                wait_for_completion(&req.done);
4102                tlb_migrate_finish(p->mm);
4103                return 0;
4104        }
4105out:
4106        task_rq_unlock(rq, &flags);
4107        return ret;
4108}
4109
4110EXPORT_SYMBOL_GPL(set_cpus_allowed);
4111
4112/*
4113 * Move (not current) task off this cpu, onto dest cpu.  We're doing
4114 * this because either it can't run here any more (set_cpus_allowed()
4115 * away from this CPU, or CPU going down), or because we're
4116 * attempting to rebalance this task on exec (sched_exec).
4117 *
4118 * So we race with normal scheduler movements, but that's OK, as long
4119 * as the task is no longer on this CPU.
4120 */
4121static void __migrate_task(struct task_struct *p, int src_cpu, int dest_cpu)
4122{
4123        runqueue_t *rq_dest, *rq_src;
4124
4125        if (unlikely(cpu_is_offline(dest_cpu)))
4126                return;
4127
4128        rq_src = cpu_rq(src_cpu);
4129        rq_dest = cpu_rq(dest_cpu);
4130
4131        double_rq_lock(rq_src, rq_dest);
4132        /* Already moved. */
4133        if (task_cpu(p) != src_cpu)
4134                goto out;
4135        /* Affinity changed (again). */
4136        if (!cpu_isset(dest_cpu, p->cpus_allowed))
4137                goto out;
4138
4139        set_task_cpu(p, dest_cpu);
4140        if (p->array) {
4141                /*
4142                 * Sync timestamp with rq_dest's before activating.
4143                 * The same thing could be achieved by doing this step
4144                 * afterwards, and pretending it was a local activate.
4145                 * This way is cleaner and logically correct.
4146                 */
4147                p->timestamp = p->timestamp - rq_src->timestamp_last_tick
4148                                + rq_dest->timestamp_last_tick;
4149                deactivate_task(p, rq_src);
4150                activate_task(p, rq_dest, 0);
4151                if (TASK_PREEMPTS_CURR(p, rq_dest))
4152                        resched_task(rq_dest->curr);
4153        }
4154
4155out:
4156        double_rq_unlock(rq_src, rq_dest);
4157}
4158
4159/*
4160 * migration_thread - this is a highprio system thread that performs
4161 * thread migration by bumping thread off CPU then 'pushing' onto
4162 * another runqueue.
4163 */
4164static int migration_thread(void * data)
4165{
4166        runqueue_t *rq;
4167        int cpu = (long)data;
4168
4169        rq = cpu_rq(cpu);
4170        BUG_ON(rq->migration_thread != current);
4171
4172        set_current_state(TASK_INTERRUPTIBLE);
4173        while (!kthread_should_stop()) {
4174                struct list_head *head;
4175                migration_req_t *req;
4176
4177                if (current->flags & PF_FREEZE)
4178                        refrigerator(PF_FREEZE);
4179
4180                spin_lock_irq(&rq->lock);
4181
4182                if (cpu_is_offline(cpu)) {
4183                        spin_unlock_irq(&rq->lock);
4184                        goto wait_to_die;
4185                }
4186
4187                if (rq->active_balance) {
4188                        active_load_balance(rq, cpu);
4189                        rq->active_balance = 0;
4190                }
4191
4192                head = &rq->migration_queue;
4193
4194                if (list_empty(head)) {
4195                        spin_unlock_irq(&rq->lock);
4196                        schedule();
4197                        set_current_state(TASK_INTERRUPTIBLE);
4198                        continue;
4199                }
4200                req = list_entry(head->next, migration_req_t, list);
4201                list_del_init(head->next);
4202
4203                if (req->type == REQ_MOVE_TASK) {
4204                        spin_unlock(&rq->lock);
4205                        __migrate_task(req->task, cpu, req->dest_cpu);
4206                        local_irq_enable();
4207                } else if (req->type == REQ_SET_DOMAIN) {
4208                        rq->sd = req->sd;
4209                        spin_unlock_irq(&rq->lock);
4210                } else {
4211                        spin_unlock_irq(&rq->lock);
4212                        WARN_ON(1);
4213                }
4214
4215                complete(&req->done);
4216        }
4217        __set_current_state(TASK_RUNNING);
4218        return 0;
4219
4220wait_to_die:
4221        /* Wait for kthread_stop */
4222        set_current_state(TASK_INTERRUPTIBLE);
4223        while (!kthread_should_stop()) {
4224                schedule();
4225                set_current_state(TASK_INTERRUPTIBLE);
4226        }
4227        __set_current_state(TASK_RUNNING);
4228        return 0;
4229}
4230
4231#ifdef CONFIG_HOTPLUG_CPU
4232/* Figure out where task on dead CPU should go, use force if neccessary. */
4233static void move_task_off_dead_cpu(int dead_cpu, struct task_struct *tsk)
4234{
4235        int dest_cpu;
4236        cpumask_t mask;
4237
4238        /* On same node? */
4239        mask = node_to_cpumask(cpu_to_node(dead_cpu));
4240        cpus_and(mask, mask, tsk->cpus_allowed);
4241        dest_cpu = any_online_cpu(mask);
4242
4243        /* On any allowed CPU? */
4244        if (dest_cpu == NR_CPUS)
4245                dest_cpu = any_online_cpu(tsk->cpus_allowed);
4246
4247        /* No more Mr. Nice Guy. */
4248        if (dest_cpu == NR_CPUS) {
4249                cpus_setall(tsk->cpus_allowed);
4250                dest_cpu = any_online_cpu(tsk->cpus_allowed);
4251
4252                /*
4253                 * Don't tell them about moving exiting tasks or
4254                 * kernel threads (both mm NULL), since they never
4255                 * leave kernel.
4256                 */
4257                if (tsk->mm && printk_ratelimit())
4258                        printk(KERN_INFO "process %d (%s) no "
4259                               "longer affine to cpu%d\n",
4260                               tsk->pid, tsk->comm, dead_cpu);
4261        }
4262        __migrate_task(tsk, dead_cpu, dest_cpu);
4263}
4264
4265/*
4266 * While a dead CPU has no uninterruptible tasks queued at this point,
4267 * it might still have a nonzero ->nr_uninterruptible counter, because
4268 * for performance reasons the counter is not stricly tracking tasks to
4269 * their home CPUs. So we just add the counter to another CPU's counter,
4270 * to keep the global sum constant after CPU-down:
4271 */
4272static void migrate_nr_uninterruptible(runqueue_t *rq_src)
4273{
4274        runqueue_t *rq_dest = cpu_rq(any_online_cpu(CPU_MASK_ALL));
4275        unsigned long flags;
4276
4277        local_irq_save(flags);
4278        double_rq_lock(rq_src, rq_dest);
4279        rq_dest->nr_uninterruptible += rq_src->nr_uninterruptible;
4280        rq_src->nr_uninterruptible = 0;
4281        double_rq_unlock(rq_src, rq_dest);
4282        local_irq_restore(flags);
4283}
4284
4285/* Run through task list and migrate tasks from the dead cpu. */
4286static void migrate_live_tasks(int src_cpu)
4287{
4288        struct task_struct *tsk, *t;
4289
4290        write_lock_irq(&tasklist_lock);
4291
4292        do_each_thread(t, tsk) {
4293                if (tsk == current)
4294                        continue;
4295
4296                if (task_cpu(tsk) == src_cpu)
4297                        move_task_off_dead_cpu(src_cpu, tsk);
4298        } while_each_thread(t, tsk);
4299
4300        write_unlock_irq(&tasklist_lock);
4301}
4302
4303/* Schedules idle task to be the next runnable task on current CPU.
4304 * It does so by boosting its priority to highest possible and adding it to
4305 * the _front_ of runqueue. Used by CPU offline code.
4306 */
4307void sched_idle_next(void)
4308{
4309        int cpu = smp_processor_id();
4310        runqueue_t *rq = this_rq();
4311        struct task_struct *p = rq->idle;
4312        unsigned long flags;
4313
4314        /* cpu has to be offline */
4315        BUG_ON(cpu_online(cpu));
4316
4317        /* Strictly not necessary since rest of the CPUs are stopped by now
4318         * and interrupts disabled on current cpu.
4319         */
4320        spin_lock_irqsave(&rq->lock, flags);
4321
4322        __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
4323        /* Add idle task to _front_ of it's priority queue */
4324        __activate_idle_task(p, rq);
4325
4326        spin_unlock_irqrestore(&rq->lock, flags);
4327}
4328
4329/* Ensures that the idle task is using init_mm right before its cpu goes
4330 * offline.
4331 */
4332void idle_task_exit(void)
4333{
4334        struct mm_struct *mm = current->active_mm;
4335
4336        BUG_ON(cpu_online(smp_processor_id()));
4337
4338        if (mm != &init_mm)
4339                switch_mm(mm, &init_mm, current);
4340        mmdrop(mm);
4341}
4342
4343static void migrate_dead(unsigned int dead_cpu, task_t *tsk)
4344{
4345        struct runqueue *rq = cpu_rq(dead_cpu);
4346
4347        /* Must be exiting, otherwise would be on tasklist. */
4348        BUG_ON(tsk->exit_state != EXIT_ZOMBIE && tsk->exit_state != EXIT_DEAD);
4349
4350        /* Cannot have done final schedule yet: would have vanished. */
4351        BUG_ON(tsk->flags & PF_DEAD);
4352
4353        get_task_struct(tsk);
4354
4355        /*
4356         * Drop lock around migration; if someone else moves it,
4357         * that's OK.  No task can be added to this CPU, so iteration is
4358         * fine.
4359         */
4360        spin_unlock_irq(&rq->lock);
4361        move_task_off_dead_cpu(dead_cpu, tsk);
4362        spin_lock_irq(&rq->lock);
4363
4364        put_task_struct(tsk);
4365}
4366
4367/* release_task() removes task from tasklist, so we won't find dead tasks. */
4368static void migrate_dead_tasks(unsigned int dead_cpu)
4369{
4370        unsigned arr, i;
4371        struct runqueue *rq = cpu_rq(dead_cpu);
4372
4373        for (arr = 0; arr < 2; arr++) {
4374                for (i = 0; i < MAX_PRIO; i++) {
4375                        struct list_head *list = &rq->arrays[arr].queue[i];
4376                        while (!list_empty(list))
4377                                migrate_dead(dead_cpu,
4378                                             list_entry(list->next, task_t,
4379                                                        run_list));
4380                }
4381        }
4382}
4383#endif /* CONFIG_HOTPLUG_CPU */
4384
4385/*
4386 * migration_call - callback that gets triggered when a CPU is added.
4387 * Here we can start up the necessary migration thread for the new CPU.
4388 */
4389static int migration_call(struct notifier_block *nfb, unsigned long action,
4390                          void *hcpu)
4391{
4392        int cpu = (long)hcpu;
4393        struct task_struct *p;
4394        struct runqueue *rq;
4395        unsigned long flags;
4396
4397        switch (action) {
4398        case CPU_UP_PREPARE:
4399                p = kthread_create(migration_thread, hcpu, "migration/%d",cpu);
4400                if (IS_ERR(p))
4401                        return NOTIFY_BAD;
4402                p->flags |= PF_NOFREEZE;
4403                kthread_bind(p, cpu);
4404                /* Must be high prio: stop_machine expects to yield to it. */
4405                rq = task_rq_lock(p, &flags);
4406                __setscheduler(p, SCHED_FIFO, MAX_RT_PRIO-1);
4407                task_rq_unlock(rq, &flags);
4408                cpu_rq(cpu)->migration_thread = p;
4409                break;
4410        case CPU_ONLINE:
4411                /* Strictly unneccessary, as first user will wake it. */
4412                wake_up_process(cpu_rq(cpu)->migration_thread);
4413                break;
4414#ifdef CONFIG_HOTPLUG_CPU
4415        case CPU_UP_CANCELED:
4416                /* Unbind it from offline cpu so it can run.  Fall thru. */
4417                kthread_bind(cpu_rq(cpu)->migration_thread,smp_processor_id());
4418                kthread_stop(cpu_rq(cpu)->migration_thread);
4419                cpu_rq(cpu)->migration_thread = NULL;
4420                break;
4421        case CPU_DEAD:
4422                migrate_live_tasks(cpu);
4423                rq = cpu_rq(cpu);
4424                kthread_stop(rq->migration_thread);
4425                rq->migration_thread = NULL;
4426                /* Idle task back to normal (off runqueue, low prio) */
4427                rq = task_rq_lock(rq->idle, &flags);
4428                deactivate_task(rq->idle, rq);
4429                rq->idle->static_prio = MAX_PRIO;
4430                __setscheduler(rq->idle, SCHED_NORMAL, 0);
4431                migrate_dead_tasks(cpu);
4432                task_rq_unlock(rq, &flags);
4433                migrate_nr_uninterruptible(rq);
4434                BUG_ON(rq->nr_running != 0);
4435
4436                /* No need to migrate the tasks: it was best-effort if
4437                 * they didn't do lock_cpu_hotplug().  Just wake up
4438                 * the requestors. */
4439                spin_lock_irq(&rq->lock);
4440                while (!list_empty(&rq->migration_queue)) {
4441                        migration_req_t *req;
4442                        req = list_entry(rq->migration_queue.next,
4443                                         migration_req_t, list);
4444                        BUG_ON(req->type != REQ_MOVE_TASK);
4445                        list_del_init(&req->list);
4446                        complete(&req->done);
4447                }
4448                spin_unlock_irq(&rq->lock);
4449                break;
4450#endif
4451        }
4452        return NOTIFY_OK;
4453}
4454
4455/* Register at highest priority so that task migration (migrate_all_tasks)
4456 * happens before everything else.
4457 */
4458static struct notifier_block __devinitdata migration_notifier = {
4459        .notifier_call = migration_call,
4460        .priority = 10
4461};
4462
4463int __init migration_init(void)
4464{
4465        void *cpu = (void *)(long)smp_processor_id();
4466        /* Start one for boot CPU. */
4467        migration_call(&migration_notifier, CPU_UP_PREPARE, cpu);
4468        migration_call(&migration_notifier, CPU_ONLINE, cpu);
4469        register_cpu_notifier(&migration_notifier);
4470        return 0;
4471}
4472#endif
4473
4474#ifdef CONFIG_SMP
4475#define SCHED_DOMAIN_DEBUG
4476#ifdef SCHED_DOMAIN_DEBUG
4477static void sched_domain_debug(struct sched_domain *sd, int cpu)
4478{
4479        int level = 0;
4480
4481        printk(KERN_DEBUG "CPU%d attaching sched-domain:\n", cpu);
4482
4483        do {
4484                int i;
4485                char str[NR_CPUS];
4486                struct sched_group *group = sd->groups;
4487                cpumask_t groupmask;
4488
4489                cpumask_scnprintf(str, NR_CPUS, sd->span);
4490                cpus_clear(groupmask);
4491
4492                printk(KERN_DEBUG);
4493                for (i = 0; i < level + 1; i++)
4494                        printk(" ");
4495                printk("domain %d: ", level);
4496
4497                if (!(sd->flags & SD_LOAD_BALANCE)) {
4498                        printk("does not load-balance\n");
4499                        if (sd->parent)
4500                                printk(KERN_ERR "ERROR: !SD_LOAD_BALANCE domain has parent");
4501                        break;
4502                }
4503
4504                printk("span %s\n", str);
4505
4506                if (!cpu_isset(cpu, sd->span))
4507                        printk(KERN_ERR "ERROR: domain->span does not contain CPU%d\n", cpu);
4508                if (!cpu_isset(cpu, group->cpumask))
4509                        printk(KERN_ERR "ERROR: domain->groups does not contain CPU%d\n", cpu);
4510
4511                printk(KERN_DEBUG);
4512                for (i = 0; i < level + 2; i++)
4513                        printk(" ");
4514                printk("groups:");
4515                do {
4516                        if (!group) {
4517                                printk("\n");
4518                                printk(KERN_ERR "ERROR: group is NULL\n");
4519                                break;
4520                        }
4521
4522                        if (!group->cpu_power) {
4523                                printk("\n");
4524                                printk(KERN_ERR "ERROR: domain->cpu_power not set\n");
4525                        }
4526
4527                        if (!cpus_weight(group->cpumask)) {
4528                                printk("\n");
4529                                printk(KERN_ERR "ERROR: empty group\n");
4530                        }
4531
4532                        if (cpus_intersects(groupmask, group->cpumask)) {
4533                                printk("\n");
4534                                printk(KERN_ERR "ERROR: repeated CPUs\n");
4535                        }
4536
4537                        cpus_or(groupmask, groupmask, group->cpumask);
4538
4539                        cpumask_scnprintf(str, NR_CPUS, group->cpumask);
4540                        printk(" %s", str);
4541
4542                        group = group->next;
4543                } while (group != sd->groups);
4544                printk("\n");
4545
4546                if (!cpus_equal(sd->span, groupmask))
4547                        printk(KERN_ERR "ERROR: groups don't span domain->span\n");
4548
4549                level++;
4550                sd = sd->parent;
4551
4552                if (sd) {
4553                        if (!cpus_subset(groupmask, sd->span))
4554                                printk(KERN_ERR "ERROR: parent span is not a superset of domain->span\n");
4555                }
4556
4557        } while (sd);
4558}
4559#else
4560#define sched_domain_debug(sd, cpu) {}
4561#endif
4562
4563/*
4564 * Attach the domain 'sd' to 'cpu' as its base domain.  Callers must
4565 * hold the hotplug lock.
4566 */
4567void __devinit cpu_attach_domain(struct sched_domain *sd, int cpu)
4568{
4569        migration_req_t req;
4570        unsigned long flags;
4571        runqueue_t *rq = cpu_rq(cpu);
4572        int local = 1;
4573
4574        sched_domain_debug(sd, cpu);
4575
4576        spin_lock_irqsave(&rq->lock, flags);
4577
4578        if (cpu == smp_processor_id() || !cpu_online(cpu)) {
4579                rq->sd = sd;
4580        } else {
4581                init_completion(&req.done);
4582                req.type = REQ_SET_DOMAIN;
4583                req.sd = sd;
4584                list_add(&req.list, &rq->migration_queue);
4585                local = 0;
4586        }
4587
4588        spin_unlock_irqrestore(&rq->lock, flags);
4589
4590        if (!local) {
4591                wake_up_process(rq->migration_thread);
4592                wait_for_completion(&req.done);
4593        }
4594}
4595
4596/* cpus with isolated domains */
4597cpumask_t __devinitdata cpu_isolated_map = CPU_MASK_NONE;
4598
4599/* Setup the mask of cpus configured for isolated domains */
4600static int __init isolated_cpu_setup(char *str)
4601{
4602        int ints[NR_CPUS], i;
4603
4604        str = get_options(str, ARRAY_SIZE(ints), ints);
4605        cpus_clear(cpu_isolated_map);
4606        for (i = 1; i <= ints[0]; i++)
4607                if (ints[i] < NR_CPUS)
4608                        cpu_set(ints[i], cpu_isolated_map);
4609        return 1;
4610}
4611
4612__setup ("isolcpus=", isolated_cpu_setup);
4613
4614/*
4615 * init_sched_build_groups takes an array of groups, the cpumask we wish
4616 * to span, and a pointer to a function which identifies what group a CPU
4617 * belongs to. The return value of group_fn must be a valid index into the
4618 * groups[] array, and must be >= 0 and < NR_CPUS (due to the fact that we
4619 * keep track of groups covered with a cpumask_t).
4620 *
4621 * init_sched_build_groups will build a circular linked list of the groups
4622 * covered by the given span, and will set each group's ->cpumask correctly,
4623 * and ->cpu_power to 0.
4624 */
4625void __devinit init_sched_build_groups(struct sched_group groups[],
4626                        cpumask_t span, int (*group_fn)(int cpu))
4627{
4628        struct sched_group *first = NULL, *last = NULL;
4629        cpumask_t covered = CPU_MASK_NONE;
4630        int i;
4631
4632        for_each_cpu_mask(i, span) {
4633                int group = group_fn(i);
4634                struct sched_group *sg = &groups[group];
4635                int j;
4636
4637                if (cpu_isset(i, covered))
4638                        continue;
4639
4640                sg->cpumask = CPU_MASK_NONE;
4641                sg->cpu_power = 0;
4642
4643                for_each_cpu_mask(j, span) {
4644                        if (group_fn(j) != group)
4645                                continue;
4646
4647                        cpu_set(j, covered);
4648                        cpu_set(j, sg->cpumask);
4649                }
4650                if (!first)
4651                        first = sg;
4652                if (last)
4653                        last->next = sg;
4654                last = sg;
4655        }
4656        last->next = first;
4657}
4658
4659
4660#ifdef ARCH_HAS_SCHED_DOMAIN
4661extern void __devinit arch_init_sched_domains(void);
4662extern void __devinit arch_destroy_sched_domains(void);
4663#else
4664#ifdef CONFIG_SCHED_SMT
4665static DEFINE_PER_CPU(struct sched_domain, cpu_domains);
4666static struct sched_group sched_group_cpus[NR_CPUS];
4667static int __devinit cpu_to_cpu_group(int cpu)
4668{
4669        return cpu;
4670}
4671#endif
4672
4673static DEFINE_PER_CPU(struct sched_domain, phys_domains);
4674static struct sched_group sched_group_phys[NR_CPUS];
4675static int __devinit cpu_to_phys_group(int cpu)
4676{
4677#ifdef CONFIG_SCHED_SMT
4678        return first_cpu(cpu_sibling_map[cpu]);
4679#else
4680        return cpu;
4681#endif
4682}
4683
4684#ifdef CONFIG_NUMA
4685
4686static DEFINE_PER_CPU(struct sched_domain, node_domains);
4687static struct sched_group sched_group_nodes[MAX_NUMNODES];
4688static int __devinit cpu_to_node_group(int cpu)
4689{
4690        return cpu_to_node(cpu);
4691}
4692#endif
4693
4694#if defined(CONFIG_SCHED_SMT) && defined(CONFIG_NUMA)
4695/*
4696 * The domains setup code relies on siblings not spanning
4697 * multiple nodes. Make sure the architecture has a proper
4698 * siblings map:
4699 */
4700static void check_sibling_maps(void)
4701{
4702        int i, j;
4703
4704        for_each_online_cpu(i) {
4705                for_each_cpu_mask(j, cpu_sibling_map[i]) {
4706                        if (cpu_to_node(i) != cpu_to_node(j)) {
4707                                printk(KERN_INFO "warning: CPU %d siblings map "
4708                                        "to different node - isolating "
4709                                        "them.\n", i);
4710                                cpu_sibling_map[i] = cpumask_of_cpu(i);
4711                                break;
4712                        }
4713                }
4714        }
4715}
4716#endif
4717
4718/*
4719 * Set up scheduler domains and groups.  Callers must hold the hotplug lock.
4720 */
4721static void __devinit arch_init_sched_domains(void)
4722{
4723        int i;
4724        cpumask_t cpu_default_map;
4725
4726#if defined(CONFIG_SCHED_SMT) && defined(CONFIG_NUMA)
4727        check_sibling_maps();
4728#endif
4729        /*
4730         * Setup mask for cpus without special case scheduling requirements.
4731         * For now this just excludes isolated cpus, but could be used to
4732         * exclude other special cases in the future.
4733         */
4734        cpus_complement(cpu_default_map, cpu_isolated_map);
4735        cpus_and(cpu_default_map, cpu_default_map, cpu_online_map);
4736
4737        /*
4738         * Set up domains. Isolated domains just stay on the dummy domain.
4739         */
4740        for_each_cpu_mask(i, cpu_default_map) {
4741                int group;
4742                struct sched_domain *sd = NULL, *p;
4743                cpumask_t nodemask = node_to_cpumask(cpu_to_node(i));
4744
4745                cpus_and(nodemask, nodemask, cpu_default_map);
4746
4747#ifdef CONFIG_NUMA
4748                sd = &per_cpu(node_domains, i);
4749                group = cpu_to_node_group(i);
4750                *sd = SD_NODE_INIT;
4751                sd->span = cpu_default_map;
4752                sd->groups = &sched_group_nodes[group];
4753#endif
4754
4755                p = sd;
4756                sd = &per_cpu(phys_domains, i);
4757                group = cpu_to_phys_group(i);
4758                *sd = SD_CPU_INIT;
4759                sd->span = nodemask;
4760                sd->parent = p;
4761                sd->groups = &sched_group_phys[group];
4762
4763#ifdef CONFIG_SCHED_SMT
4764                p = sd;
4765                sd = &per_cpu(cpu_domains, i);
4766                group = cpu_to_cpu_group(i);
4767                *sd = SD_SIBLING_INIT;
4768                sd->span = cpu_sibling_map[i];
4769                cpus_and(sd->span, sd->span, cpu_default_map);
4770                sd->parent = p;
4771                sd->groups = &sched_group_cpus[group];
4772#endif
4773        }
4774
4775#ifdef CONFIG_SCHED_SMT
4776        /* Set up CPU (sibling) groups */
4777        for_each_online_cpu(i) {
4778                cpumask_t this_sibling_map = cpu_sibling_map[i];
4779                cpus_and(this_sibling_map, this_sibling_map, cpu_default_map);
4780                if (i != first_cpu(this_sibling_map))
4781                        continue;
4782
4783                init_sched_build_groups(sched_group_cpus, this_sibling_map,
4784                                                &cpu_to_cpu_group);
4785        }
4786#endif
4787
4788        /* Set up physical groups */
4789        for (i = 0; i < MAX_NUMNODES; i++) {
4790                cpumask_t nodemask = node_to_cpumask(i);
4791
4792                cpus_and(nodemask, nodemask, cpu_default_map);
4793                if (cpus_empty(nodemask))
4794                        continue;
4795
4796                init_sched_build_groups(sched_group_phys, nodemask,
4797                                                &cpu_to_phys_group);
4798        }
4799
4800#ifdef CONFIG_NUMA
4801        /* Set up node groups */
4802        init_sched_build_groups(sched_group_nodes, cpu_default_map,
4803                                        &cpu_to_node_group);
4804#endif
4805
4806        /* Calculate CPU power for physical packages and nodes */
4807        for_each_cpu_mask(i, cpu_default_map) {
4808                int power;
4809                struct sched_domain *sd;
4810#ifdef CONFIG_SCHED_SMT
4811                sd = &per_cpu(cpu_domains, i);
4812                power = SCHED_LOAD_SCALE;
4813                sd->groups->cpu_power = power;
4814#endif
4815
4816                sd = &per_cpu(phys_domains, i);
4817                power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE *
4818                                (cpus_weight(sd->groups->cpumask)-1) / 10;
4819                sd->groups->cpu_power = power;
4820
4821#ifdef CONFIG_NUMA
4822                if (i == first_cpu(sd->groups->cpumask)) {
4823                        /* Only add "power" once for each physical package. */
4824                        sd = &per_cpu(node_domains, i);
4825                        sd->groups->cpu_power += power;
4826                }
4827#endif
4828        }
4829
4830        /* Attach the domains */
4831        for_each_online_cpu(i) {
4832                struct sched_domain *sd;
4833#ifdef CONFIG_SCHED_SMT
4834                sd = &per_cpu(cpu_domains, i);
4835#else
4836                sd = &per_cpu(phys_domains, i);
4837#endif
4838                cpu_attach_domain(sd, i);
4839        }
4840}
4841
4842#ifdef CONFIG_HOTPLUG_CPU
4843static void __devinit arch_destroy_sched_domains(void)
4844{
4845        /* Do nothing: everything is statically allocated. */
4846}
4847#endif
4848
4849#endif /* ARCH_HAS_SCHED_DOMAIN */
4850
4851/*
4852 * Initial dummy domain for early boot and for hotplug cpu. Being static,
4853 * it is initialized to zero, so all balancing flags are cleared which is
4854 * what we want.
4855 */
4856static struct sched_domain sched_domain_dummy;
4857
4858#ifdef CONFIG_HOTPLUG_CPU
4859/*
4860 * Force a reinitialization of the sched domains hierarchy.  The domains
4861 * and groups cannot be updated in place without racing with the balancing
4862 * code, so we temporarily attach all running cpus to a "dummy" domain
4863 * which will prevent rebalancing while the sched domains are recalculated.
4864 */
4865static int update_sched_domains(struct notifier_block *nfb,
4866                                unsigned long action, void *hcpu)
4867{
4868        int i;
4869
4870        switch (action) {
4871        case CPU_UP_PREPARE:
4872        case CPU_DOWN_PREPARE:
4873                for_each_online_cpu(i)
4874                        cpu_attach_domain(&sched_domain_dummy, i);
4875                arch_destroy_sched_domains();
4876                return NOTIFY_OK;
4877
4878        case CPU_UP_CANCELED:
4879        case CPU_DOWN_FAILED:
4880        case CPU_ONLINE:
4881        case CPU_DEAD:
4882                /*
4883                 * Fall through and re-initialise the domains.
4884                 */
4885                break;
4886        default:
4887                return NOTIFY_DONE;
4888        }
4889
4890        /* The hotplug lock is already held by cpu_up/cpu_down */
4891        arch_init_sched_domains();
4892
4893        return NOTIFY_OK;
4894}
4895#endif
4896
4897void __init sched_init_smp(void)
4898{
4899        lock_cpu_hotplug();
4900        arch_init_sched_domains();
4901        unlock_cpu_hotplug();
4902        /* XXX: Theoretical race here - CPU may be hotplugged now */
4903        hotcpu_notifier(update_sched_domains, 0);
4904}
4905#else
4906void __init sched_init_smp(void)
4907{
4908}
4909#endif /* CONFIG_SMP */
4910
4911int in_sched_functions(unsigned long addr)
4912{
4913        /* Linker adds these: start and end of __sched functions */
4914        extern char __sched_text_start[], __sched_text_end[];
4915        return in_lock_functions(addr) ||
4916                (addr >= (unsigned long)__sched_text_start
4917                && addr < (unsigned long)__sched_text_end);
4918}
4919
4920void __init sched_init(void)
4921{
4922        runqueue_t *rq;
4923        int i, j, k;
4924
4925        for (i = 0; i < NR_CPUS; i++) {
4926                prio_array_t *array;
4927
4928                rq = cpu_rq(i);
4929                spin_lock_init(&rq->lock);
4930                rq->active = rq->arrays;
4931                rq->expired = rq->arrays + 1;
4932                rq->best_expired_prio = MAX_PRIO;
4933
4934#ifdef CONFIG_SMP
4935                rq->sd = &sched_domain_dummy;
4936                rq->cpu_load = 0;
4937                rq->active_balance = 0;
4938                rq->push_cpu = 0;
4939                rq->migration_thread = NULL;
4940                INIT_LIST_HEAD(&rq->migration_queue);
4941#endif
4942                atomic_set(&rq->nr_iowait, 0);
4943
4944                for (j = 0; j < 2; j++) {
4945                        array = rq->arrays + j;
4946                        for (k = 0; k < MAX_PRIO; k++) {
4947                                INIT_LIST_HEAD(array->queue + k);
4948                                __clear_bit(k, array->bitmap);
4949                        }
4950                        // delimiter for bitsearch
4951                        __set_bit(MAX_PRIO, array->bitmap);
4952                }
4953        }
4954
4955        /*
4956         * The boot idle thread does lazy MMU switching as well:
4957         */
4958        atomic_inc(&init_mm.mm_count);
4959        enter_lazy_tlb(&init_mm, current);
4960
4961        /*
4962         * Make us the idle thread. Technically, schedule() should not be
4963         * called from this thread, however somewhere below it might be,
4964         * but because we are the idle thread, we just pick up running again
4965         * when this runqueue becomes "idle".
4966         */
4967        init_idle(current, smp_processor_id());
4968}
4969
4970#ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
4971void __might_sleep(char *file, int line)
4972{
4973#if defined(in_atomic)
4974        static unsigned long prev_jiffy;        /* ratelimiting */
4975
4976        if ((in_atomic() || irqs_disabled()) &&
4977            system_state == SYSTEM_RUNNING && !oops_in_progress) {
4978                if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
4979                        return;
4980                prev_jiffy = jiffies;
4981                printk(KERN_ERR "Debug: sleeping function called from invalid"
4982                                " context at %s:%d\n", file, line);
4983                printk("in_atomic():%d, irqs_disabled():%d\n",
4984                        in_atomic(), irqs_disabled());
4985                dump_stack();
4986        }
4987#endif
4988}
4989EXPORT_SYMBOL(__might_sleep);
4990#endif
4991
4992#ifdef CONFIG_MAGIC_SYSRQ
4993void normalize_rt_tasks(void)
4994{
4995        struct task_struct *p;
4996        prio_array_t *array;
4997        unsigned long flags;
4998        runqueue_t *rq;
4999
5000        read_lock_irq(&tasklist_lock);
5001        for_each_process (p) {
5002                if (!rt_task(p))
5003                        continue;
5004
5005                rq = task_rq_lock(p, &flags);
5006
5007                array = p->array;
5008                if (array)
5009                        deactivate_task(p, task_rq(p));
5010                __setscheduler(p, SCHED_NORMAL, 0);
5011                if (array) {
5012                        __activate_task(p, task_rq(p));
5013                        resched_task(rq->curr);
5014                }
5015
5016                task_rq_unlock(rq, &flags);
5017        }
5018        read_unlock_irq(&tasklist_lock);
5019}
5020
5021#endif /* CONFIG_MAGIC_SYSRQ */
5022
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.