From a47075934535c68af923d640e7059b896216fe77 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 15 Oct 2007 17:00:13 +0200 Subject: [PATCH] --- yaml --- r: 69092 b: refs/heads/master c: 1e819950660e6a811b549422ffb652273257e45e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9bbe713855fc..8264ee9aeefa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 08ec3df5109e0555da5b9deb4382fd29733c852c +refs/heads/master: 1e819950660e6a811b549422ffb652273257e45e diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index e717047be5cf..4f13d379bea5 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -3481,9 +3481,13 @@ asmlinkage void __sched schedule(void) schedule_debug(prev); - spin_lock_irq(&rq->lock); - clear_tsk_need_resched(prev); + /* + * Do the rq-clock update outside the rq lock: + */ + local_irq_disable(); __update_rq_clock(rq); + spin_lock(&rq->lock); + clear_tsk_need_resched(prev); if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely((prev->state & TASK_INTERRUPTIBLE) &&