This modifies nmi_watchdog_tick behavior for x86_64 arch to consider both timer and pit/hpet IRQs just as the i386 arch does. Without this fix a kernel crash occurs very early in the boot process if nmi_watchdog is on. Signed-off-by: David Bahi <[email protected]> --- arch/x86_64/kernel/nmi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) Index: linux-2.6.22.8-rt9_1267/arch/x86_64/kernel/nmi.c =================================================================== --- linux-2.6.22.8-rt9_1267.orig/arch/x86_64/kernel/nmi.c +++ linux-2.6.22.8-rt9_1267/arch/x86_64/kernel/nmi.c @@ -369,8 +369,6 @@ int notrace __kprobes nmi_watchdog_tick( touched = 1; } - sum = read_pda(apic_timer_irqs); - if (__get_cpu_var(nmi_touch)) { __get_cpu_var(nmi_touch) = 0; touched = 1; @@ -386,6 +384,12 @@ int notrace __kprobes nmi_watchdog_tick( cpu_clear(cpu, backtrace_mask); } + /* + * Take the local apic timer and PIT/HPET into account. We don't + * know which one is active, when we have highres/dyntick on + */ + sum = read_pda(apic_timer_irqs) + kstat_cpu(cpu).irqs[0]; + #ifdef CONFIG_X86_MCE /* Could check oops_in_progress here too, but it's safer not too */
Attachment:
signature.asc
Description: PGP signature
- Follow-Ups:
- [PATCH 1/1] nmi_watchdog: x86_64 count timer and hpet like i386
- From: "David Bahi" <[email protected]>
- [PATCH 1/1] nmi_watchdog: x86_64 count timer and hpet like i386
- References:
- [PATCH 1/1] nmi_watchdog: x86_64 count timer and hpet like i386
- From: "David Bahi" <[email protected]>
- [PATCH 1/1] nmi_watchdog: x86_64 count timer and hpet like i386
- Prev by Date: Re: [PATCH 2/6] LBS: fix uninitialized swapper_space
- Next by Date: Re: [PATCH 0/3] A kernel tracing interface - (updated)
- Previous by thread: x86_64 and AMD with C1E
- Index(es):