Messages in this thread Patch in this message |  | | | Date | Thu, 26 Jul 2007 11:00:12 +0200 | | From | Ingo Molnar <> | | Subject | [patch] sched: make cpu_clock() not use the rq clock |
| |
Subject: sched: make cpu_clock() not use the rq clock From: Ingo Molnar <mingo@elte.hu>
it is enough to disable interrupts to get the precise rq-clock of the local CPU.
this also solves an NMI watchdog regression: the NMI watchdog calls touch_softlockup_watchdog(), which might deadlock on rq->lock if the NMI hits an rq-locked critical section.
Signed-off-by: Ingo Molnar <mingo@elte.hu> --- kernel/sched.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) Index: linux-rt-rebase.q/kernel/sched.c =================================================================== --- linux-rt-rebase.q.orig/kernel/sched.c +++ linux-rt-rebase.q/kernel/sched.c @@ -446,13 +446,12 @@ static inline unsigned long long rq_cloc */ unsigned long long cpu_clock(int cpu) { - struct rq *rq = cpu_rq(cpu); unsigned long long now; unsigned long flags; - spin_lock_irqsave(&rq->lock, flags); - now = rq_clock(rq); - spin_unlock_irqrestore(&rq->lock, flags); + local_irq_save(flags); + now = rq_clock(cpu_rq(cpu)); + local_irq_restore(flags); return now; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |