aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86_64/kernel/smpboot.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c
index 4fb34b5cb1f9..d4b63281c0f5 100644
--- a/arch/x86_64/kernel/smpboot.c
+++ b/arch/x86_64/kernel/smpboot.c
@@ -540,8 +540,8 @@ static void inquire_remote_apic(int apicid)
540 */ 540 */
541 apic_wait_icr_idle(); 541 apic_wait_icr_idle();
542 542
543 apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(apicid)); 543 apic_write(APIC_ICR2, SET_APIC_DEST_FIELD(apicid));
544 apic_write_around(APIC_ICR, APIC_DM_REMRD | regs[i]); 544 apic_write(APIC_ICR, APIC_DM_REMRD | regs[i]);
545 545
546 timeout = 0; 546 timeout = 0;
547 do { 547 do {
@@ -574,12 +574,12 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
574 /* 574 /*
575 * Turn INIT on target chip 575 * Turn INIT on target chip
576 */ 576 */
577 apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); 577 apic_write(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
578 578
579 /* 579 /*
580 * Send IPI 580 * Send IPI
581 */ 581 */
582 apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_INT_ASSERT 582 apic_write(APIC_ICR, APIC_INT_LEVELTRIG | APIC_INT_ASSERT
583 | APIC_DM_INIT); 583 | APIC_DM_INIT);
584 584
585 Dprintk("Waiting for send to finish...\n"); 585 Dprintk("Waiting for send to finish...\n");
@@ -595,10 +595,10 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
595 Dprintk("Deasserting INIT.\n"); 595 Dprintk("Deasserting INIT.\n");
596 596
597 /* Target chip */ 597 /* Target chip */
598 apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); 598 apic_write(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
599 599
600 /* Send IPI */ 600 /* Send IPI */
601 apic_write_around(APIC_ICR, APIC_INT_LEVELTRIG | APIC_DM_INIT); 601 apic_write(APIC_ICR, APIC_INT_LEVELTRIG | APIC_DM_INIT);
602 602
603 Dprintk("Waiting for send to finish...\n"); 603 Dprintk("Waiting for send to finish...\n");
604 timeout = 0; 604 timeout = 0;
@@ -640,12 +640,11 @@ static int __cpuinit wakeup_secondary_via_INIT(int phys_apicid, unsigned int sta
640 */ 640 */
641 641
642 /* Target chip */ 642 /* Target chip */
643 apic_write_around(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid)); 643 apic_write(APIC_ICR2, SET_APIC_DEST_FIELD(phys_apicid));
644 644
645 /* Boot on the stack */ 645 /* Boot on the stack */
646 /* Kick the second */ 646 /* Kick the second */
647 apic_write_around(APIC_ICR, APIC_DM_STARTUP 647 apic_write(APIC_ICR, APIC_DM_STARTUP | (start_rip >> 12));
648 | (start_rip >> 12));
649 648
650 /* 649 /*
651 * Give the other CPU some time to accept the IPI. 650 * Give the other CPU some time to accept the IPI.