diff options
| author | Cyrill Gorcunov <gorcunov@gmail.com> | 2008-10-22 10:00:09 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-10-22 10:56:16 -0400 |
| commit | db96b0a0e4158806fcf03945a870f9320e6bac9b (patch) | |
| tree | 3697acccd698b9dcfc51995ed3855116863bb67d | |
| parent | 8d433c407dea248c8db09edbc0b3c245977d596f (diff) | |
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>
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 8 |
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: | |||
| 893 | smpboot_setup_warm_reset_vector(start_ip); | 893 | smpboot_setup_warm_reset_vector(start_ip); |
| 894 | /* | 894 | /* |
| 895 | * Be paranoid about clearing APIC errors. | 895 | * Be paranoid about clearing APIC errors. |
| 896 | */ | 896 | */ |
| 897 | apic_write(APIC_ESR, 0); | 897 | if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid])) { |
| 898 | apic_read(APIC_ESR); | 898 | apic_write(APIC_ESR, 0); |
| 899 | apic_read(APIC_ESR); | ||
| 900 | } | ||
| 899 | } | 901 | } |
| 900 | 902 | ||
| 901 | /* | 903 | /* |
