diff options
author | Ingo Molnar <mingo@elte.hu> | 2007-03-22 05:31:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-22 22:42:31 -0400 |
commit | 4edc5db83f574dfcc8be35b7b96760ded543b360 (patch) | |
tree | 73130848bbb4706699b70621ee2b4d587830cedf /arch/i386/kernel/apic.c | |
parent | 9c35dd7f8bda1849dcb430be99325504221048df (diff) |
[PATCH] setup_boot_APIC_clock() irq-enable fix
latest -git triggers an irqtrace/lockdep warning of a leaked
irqs-off condition:
BUG: at kernel/fork.c:1033 copy_process()
after some debugging it turns out that commit ca1b940c accidentally left
interrupts disabled - which trickled down all the way to the first time
we fork a kernel thread and triggered the warning.
the fix is to re-enable interrupts in the 'else' branch of
setup_boot_APIC_clock()'s pmtimers calibration path.
Reported-by: Michal Piotrowski <michal.k.k.piotrowski@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Thomas Gleixner <tglx@brown.paperbag.linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/i386/kernel/apic.c')
-rw-r--r-- | arch/i386/kernel/apic.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 36825117835d..244c3fe9b8c3 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -506,7 +506,8 @@ void __init setup_boot_APIC_clock(void) | |||
506 | apic_printk(APIC_VERBOSE, "... jiffies result ok\n"); | 506 | apic_printk(APIC_VERBOSE, "... jiffies result ok\n"); |
507 | else | 507 | else |
508 | local_apic_timer_verify_ok = 0; | 508 | local_apic_timer_verify_ok = 0; |
509 | } | 509 | } else |
510 | local_irq_enable(); | ||
510 | 511 | ||
511 | if (!local_apic_timer_verify_ok) { | 512 | if (!local_apic_timer_verify_ok) { |
512 | printk(KERN_WARNING | 513 | printk(KERN_WARNING |