The following commit has been merged in the linux branch: commit f061d83a2b29f08b41c494335b7d23a432cb5a2d Merge: e345fe1ada6f91bf703ca080168745ef18b2f037 e17b38bf9e70d74f3739a600db75240078ac1407 Author: Linus Torvalds torvalds@linux-foundation.org Date: Wed Oct 14 15:25:04 2009 -0700
Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched: Fix missing kernel-doc notation Revert "x86, timers: Check for pending timers after (device) interrupts" sched: Update the clock of runqueue select_task_rq() selected
diff --combined kernel/sched.c index 8d25be0,789001d..e886895 --- a/kernel/sched.c +++ b/kernel/sched.c @@@ -676,6 -676,7 +676,7 @@@ inline void update_rq_clock(struct rq *
/** * runqueue_is_locked + * @cpu: the processor in question. * * Returns true if the current cpu runqueue is locked. * This interface allows printk to be called with the runqueue lock @@@ -2311,7 -2312,7 +2312,7 @@@ static int try_to_wake_up(struct task_s { int cpu, orig_cpu, this_cpu, success = 0; unsigned long flags; - struct rq *rq; + struct rq *rq, *orig_rq;
if (!sched_feat(SYNC_WAKEUPS)) wake_flags &= ~WF_SYNC; @@@ -2319,7 -2320,7 +2320,7 @@@ this_cpu = get_cpu();
smp_wmb(); - rq = task_rq_lock(p, &flags); + rq = orig_rq = task_rq_lock(p, &flags); update_rq_clock(rq); if (!(p->state & state)) goto out; @@@ -2350,6 -2351,10 +2351,10 @@@ set_task_cpu(p, cpu);
rq = task_rq_lock(p, &flags); + + if (rq != orig_rq) + update_rq_clock(rq); + WARN_ON(p->state != TASK_WAKING); cpu = task_cpu(p);
@@@ -3656,6 -3661,7 +3661,7 @@@ static void update_group_power(struct s
/** * update_sg_lb_stats - Update sched_group's statistics for load balancing. + * @sd: The sched_domain whose statistics are to be updated. * @group: sched_group whose statistics are to be updated. * @this_cpu: Cpu for which load balance is currently performed. * @idle: Idle status of this_cpu @@@ -6718,6 -6724,9 +6724,6 @@@ EXPORT_SYMBOL(yield) /* * This task is about to go to sleep on IO. Increment rq->nr_iowait so * that process accounting knows that this is a task in IO wait state. - * - * But don't do that if it is a deliberate, throttling IO wait (this task - * has set its backing_dev_info: the queue against which it should throttle) */ void __sched io_schedule(void) {