Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 May 2010 15:27:54 +0000 (08:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 May 2010 15:27:54 +0000 (08:27 -0700)
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (49 commits)
  stop_machine: Move local variable closer to the usage site in cpu_stop_cpu_callback()
  sched, wait: Use wrapper functions
  sched: Remove a stale comment
  ondemand: Make the iowait-is-busy time a sysfs tunable
  ondemand: Solve a big performance issue by counting IOWAIT time as busy
  sched: Intoduce get_cpu_iowait_time_us()
  sched: Eliminate the ts->idle_lastupdate field
  sched: Fold updating of the last_update_time_info into update_ts_time_stats()
  sched: Update the idle statistics in get_cpu_idle_time_us()
  sched: Introduce a function to update the idle statistics
  sched: Add a comment to get_cpu_idle_time_us()
  cpu_stop: add dummy implementation for UP
  sched: Remove rq argument to the tracepoints
  rcu: need barrier() in UP synchronize_sched_expedited()
  sched: correctly place paranioa memory barriers in synchronize_sched_expedited()
  sched: kill paranoia check in synchronize_sched_expedited()
  sched: replace migration_thread with cpu_stop
  stop_machine: reimplement using cpu_stop
  cpu_stop: implement stop_cpu[s]()
  sched: Fix select_idle_sibling() logic in select_task_rq_fair()
  ...

1  2 
include/linux/rcutiny.h
include/linux/rcutree.h
include/linux/sched.h
kernel/cgroup.c
kernel/module.c
kernel/rcutorture.c
kernel/sched.c
kernel/sched_debug.c

Simple merge
index 48282055e83d176f64a6b830a692b387f328218c,24e467e526b83d67b7ed4bbb79ac9b0576b88844..c0ed1c056f290701def0e0116b6aad72ada30c91
@@@ -34,9 -34,7 +34,8 @@@ struct notifier_block
  
  extern void rcu_sched_qs(int cpu);
  extern void rcu_bh_qs(int cpu);
 +extern void rcu_note_context_switch(int cpu);
  extern int rcu_needs_cpu(int cpu);
- extern int rcu_expedited_torture_stats(char *page);
  
  #ifdef CONFIG_TREE_PREEMPT_RCU
  
Simple merge
diff --cc kernel/cgroup.c
Simple merge
diff --cc kernel/module.c
Simple merge
Simple merge
diff --cc kernel/sched.c
index 5cd607ec8405f6869ef1a4e153b97d790fa3d0e1,b531d7934083b3216e50d4e4f6536ef7f08285ed..1d93cd0ae4d36a8c3cc4af5ff8e195dd1d9fcfda
@@@ -2076,17 -2054,52 +2064,9 @@@ static bool migrate_task(struct task_st
         * If the task is not on a runqueue (and not running), then
         * the next wake-up will properly place the task.
         */
-       if (!p->se.on_rq && !task_running(rq, p))
-               return 0;
-       init_completion(&req->done);
-       req->task = p;
-       req->dest_cpu = dest_cpu;
-       list_add(&req->list, &rq->migration_queue);
-       return 1;
+       return p->se.on_rq || task_running(rq, p);
  }
  
 -/*
 - * wait_task_context_switch - wait for a thread to complete at least one
 - *                            context switch.
 - *
 - * @p must not be current.
 - */
 -void wait_task_context_switch(struct task_struct *p)
 -{
 -      unsigned long nvcsw, nivcsw, flags;
 -      int running;
 -      struct rq *rq;
 -
 -      nvcsw   = p->nvcsw;
 -      nivcsw  = p->nivcsw;
 -      for (;;) {
 -              /*
 -               * The runqueue is assigned before the actual context
 -               * switch. We need to take the runqueue lock.
 -               *
 -               * We could check initially without the lock but it is
 -               * very likely that we need to take the lock in every
 -               * iteration.
 -               */
 -              rq = task_rq_lock(p, &flags);
 -              running = task_running(rq, p);
 -              task_rq_unlock(rq, &flags);
 -
 -              if (likely(!running))
 -                      break;
 -              /*
 -               * The switch count is incremented before the actual
 -               * context switch. We thus wait for two switches to be
 -               * sure at least one completed.
 -               */
 -              if ((p->nvcsw - nvcsw) > 1)
 -                      break;
 -              if ((p->nivcsw - nivcsw) > 1)
 -                      break;
 -
 -              cpu_relax();
 -      }
 -}
 -
  /*
   * wait_task_inactive - wait for a thread to unschedule.
   *
Simple merge