Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > fc11cd6e1c513a17304da94a5390f3cd > files > 3914

kernel-2.6.18-194.11.1.el5.src.rpm

From: Prarit Bhargava <prarit@redhat.com>
Date: Mon, 2 Nov 2009 19:50:55 -0500
Subject: [x86] disable NMI watchdog on CPU remove
Message-id: <20091102194911.17719.89030.sendpatchset@prarit.bos.redhat.com>
Patchwork-id: 21283
O-Subject: [RHEL5 PATCH]: Disable NMI watchdog on CPU remove
Bugzilla: 532514
RH-Acked-by: Aristeu Rozanski <aris@redhat.com>
RH-Acked-by: Don Zickus <dzickus@redhat.com>

Disable the NMI watchdog when taking a CPU offline.

Resolves a panic (please see BZ 532514 for details)

Successfully tested on 32 and 64 bit x86 by me.

Resolves BZ 532514.

diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index dad3465..7babd56 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -1386,6 +1386,8 @@ int __cpu_disable(void)
 	if (cpu == 0)
 		return -EBUSY;
 
+	if (nmi_watchdog == NMI_LOCAL_APIC)
+		stop_apic_nmi_watchdog();
 	clear_local_APIC();
 	/* Allow any queued timer interrupts to get serviced */
 	local_irq_enable();
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c
index bad370b..a1c1899 100644
--- a/arch/x86_64/kernel/smpboot.c
+++ b/arch/x86_64/kernel/smpboot.c
@@ -1254,6 +1254,8 @@ int __cpu_disable(void)
 	if (cpu == 0)
 		return -EBUSY;
 
+	if (nmi_watchdog == NMI_LOCAL_APIC)
+		stop_apic_nmi_watchdog();
 	clear_local_APIC();
 
 	/*