There appears to be a spurious local_irq_enable() in the check_nmi_watchdog() of both i386 and x86_64, I cannot see when are interrupts being disabled before it. In fact we seem to be allocating with GFP_KERNEL and calling smp_call_function() just before this call, which suggests this call to local_irq_enable() is spurious and can be removed.
Signed-off-by: Satyam Sharma <[EMAIL PROTECTED]> Cc: Ingo Molnar <[EMAIL PROTECTED]> Cc: Andi Kleen <[EMAIL PROTECTED]> --- arch/i386/kernel/nmi.c | 1 - arch/x86_64/kernel/nmi.c | 1 - 2 files changed, 2 deletions(-) --- diff -ruNp a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c --- a/arch/i386/kernel/nmi.c 2007-06-07 12:46:34.000000000 +0530 +++ b/arch/i386/kernel/nmi.c 2007-06-07 15:37:57.000000000 +0530 @@ -94,7 +94,6 @@ static int __init check_nmi_watchdog(voi for_each_possible_cpu(cpu) prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count; - local_irq_enable(); mdelay((20*1000)/nmi_hz); // wait 20 ticks for_each_possible_cpu(cpu) { diff -ruNp a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c --- a/arch/x86_64/kernel/nmi.c 2007-06-07 12:46:39.000000000 +0530 +++ b/arch/x86_64/kernel/nmi.c 2007-06-07 15:34:19.000000000 +0530 @@ -104,7 +104,6 @@ int __init check_nmi_watchdog (void) for (cpu = 0; cpu < NR_CPUS; cpu++) counts[cpu] = cpu_pda(cpu)->__nmi_count; - local_irq_enable(); mdelay((20*1000)/nmi_hz); // wait 20 ticks for_each_online_cpu(cpu) { - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/