summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2008-10-22 18:00:09 +0400
committerIngo Molnar <mingo@elte.hu>2008-10-22 16:56:16 +0200
commitdb96b0a0e4158806fcf03945a870f9320e6bac9b (patch)
tree3697acccd698b9dcfc51995ed3855116863bb67d /arch
parent8d433c407dea248c8db09edbc0b3c245977d596f (diff)
downloadlinux-db96b0a0e4158806fcf03945a870f9320e6bac9b.tar.gz
linux-db96b0a0e4158806fcf03945a870f9320e6bac9b.tar.xz
x86: do_boot_cpu - check if we have ESR register
Impact: fix APIC IRQ irregularities on certain older boxes We should touch the APIC ESR register if only we have it. The patch fixes the problem mentioned by Max Kellermann: http://lkml.org/lkml/2008/10/17/147 Bisected-by: Max Kellermann <mk@cm4all.com> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> [ mingo@elte.hu: build fix ] Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/smpboot.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 7ece815ea637..7b1093397319 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -893,9 +893,11 @@ do_rest:
smpboot_setup_warm_reset_vector(start_ip);
/*
* Be paranoid about clearing APIC errors.
- */
- apic_write(APIC_ESR, 0);
- apic_read(APIC_ESR);
+ */
+ if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) {
+ apic_write(APIC_ESR, 0);
+ apic_read(APIC_ESR);
+ }
}
/*