From: Cyrill Gorcunov <gorcunov@gmail.com>
Date: Sun, 14 Sep 2008 17:58:49 +0000 (+0400)
Subject: x86: smpboot - check if we have ESR register in wakeup_secondary_cpu
X-Git-Tag: firefly_0821_release~17719^2~62
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=59ef48a58e59cc27255d526ae3fa60ddcd977208;p=firefly-linux-kernel-4.4.55.git

x86: smpboot - check if we have ESR register in wakeup_secondary_cpu

We should check if we have ESR register before reading from it.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: "Maciej W. Rozycki" <macro@linux-mips.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---

diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index b700c9a10644..a778e221ccfb 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -599,10 +599,12 @@ wakeup_secondary_cpu(int logical_apicid, unsigned long start_eip)
 	 * Give the other CPU some time to accept the IPI.
 	 */
 	udelay(200);
-	maxlvt = lapic_get_maxlvt();
-	if (maxlvt > 3)			/* Due to the Pentium erratum 3AP.  */
-		apic_write(APIC_ESR, 0);
-	accept_status = (apic_read(APIC_ESR) & 0xEF);
+	if (APIC_INTEGRATED(apic_version[phys_apicid])) {
+		maxlvt = lapic_get_maxlvt();
+		if (maxlvt > 3)			/* Due to the Pentium erratum 3AP.  */
+			apic_write(APIC_ESR, 0);
+		accept_status = (apic_read(APIC_ESR) & 0xEF);
+	}
 	pr_debug("NMI sent.\n");
 
 	if (send_status)