aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-03-19 13:25:11 -0400
committerIngo Molnar <mingo@elte.hu>2008-04-17 11:41:00 -0400
commit148a30f8cf2ac72b7ea6e5c8971fad8d80ec3879 (patch)
tree471a35308b130102ea4dfabe007a821667cccd81
parentac56ef61a1f65aaf1cb31dca2a407322c5f0a4dd (diff)
x86: use APIC_INTEGRATED tests in x86_64
This patch does not change the behaviour of x86_64, since APIC_INTEGRATED is always defined as (1). But the code now matches exactly i386 version (well, this part of the code, at least) Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/smpboot_64.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
index cfcfd2c2062b..d7b59d6c6963 100644
--- a/arch/x86/kernel/smpboot_64.c
+++ b/arch/x86/kernel/smpboot_64.c
@@ -295,6 +295,15 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
295 unsigned long send_status, accept_status = 0; 295 unsigned long send_status, accept_status = 0;
296 int maxlvt, num_starts, j; 296 int maxlvt, num_starts, j;
297 297
298 /*
299 * Be paranoid about clearing APIC errors.
300 */
301 if (APIC_INTEGRATED(apic_version[phys_apicid])) {
302 apic_read_around(APIC_SPIV);
303 apic_write(APIC_ESR, 0);
304 apic_read(APIC_ESR);
305 }
306
298 Dprintk("Asserting INIT.\n"); 307 Dprintk("Asserting INIT.\n");
299 308
300 /* 309 /*
@@ -327,7 +336,10 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
327 mb(); 336 mb();
328 atomic_set(&init_deasserted, 1); 337 atomic_set(&init_deasserted, 1);
329 338
330 num_starts = 2; 339 if (APIC_INTEGRATED(apic_version[phys_apicid]))
340 num_starts = 2;
341 else
342 num_starts = 0;
331 343
332 /* 344 /*
333 * Paravirt / VMI wants a startup IPI hook here to set up the 345 * Paravirt / VMI wants a startup IPI hook here to set up the