diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-03-19 13:25:32 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 11:41:01 -0400 |
commit | eb44d0a2a9c4d64ed89044fcf1f75e6a27c42ea7 (patch) | |
tree | dc7ef962744d2282265c7be902109db46011ef97 /arch | |
parent | 8d77010f8c93b4d41ffd71c7ad9d07fc1668cd5a (diff) |
x86: include smpboot_hooks.h in smpboot_64.c
We do it and also fix conflicts, which makes x86_64 automatically
closer to i386
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/smpboot_64.c | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c index c6c993f4c415..b9384b3af017 100644 --- a/arch/x86/kernel/smpboot_64.c +++ b/arch/x86/kernel/smpboot_64.c | |||
@@ -61,6 +61,7 @@ | |||
61 | #include <asm/numa.h> | 61 | #include <asm/numa.h> |
62 | 62 | ||
63 | #include <mach_wakecpu.h> | 63 | #include <mach_wakecpu.h> |
64 | #include <smpboot_hooks.h> | ||
64 | 65 | ||
65 | /* Set when the idlers are all forked */ | 66 | /* Set when the idlers are all forked */ |
66 | int smp_threads_ready; | 67 | int smp_threads_ready; |
@@ -517,14 +518,7 @@ do_rest: | |||
517 | 518 | ||
518 | Dprintk("Setting warm reset code and vector.\n"); | 519 | Dprintk("Setting warm reset code and vector.\n"); |
519 | 520 | ||
520 | CMOS_WRITE(0xa, 0xf); | 521 | smpboot_setup_warm_reset_vector(start_rip); |
521 | local_flush_tlb(); | ||
522 | Dprintk("1.\n"); | ||
523 | *((volatile unsigned short *) phys_to_virt(0x469)) = start_rip >> 4; | ||
524 | Dprintk("2.\n"); | ||
525 | *((volatile unsigned short *) phys_to_virt(0x467)) = start_rip & 0xf; | ||
526 | Dprintk("3.\n"); | ||
527 | |||
528 | /* | 522 | /* |
529 | * Be paranoid about clearing APIC errors. | 523 | * Be paranoid about clearing APIC errors. |
530 | */ | 524 | */ |
@@ -594,23 +588,6 @@ cycles_t cacheflush_time; | |||
594 | unsigned long cache_decay_ticks; | 588 | unsigned long cache_decay_ticks; |
595 | 589 | ||
596 | /* | 590 | /* |
597 | * Cleanup possible dangling ends... | ||
598 | */ | ||
599 | static __cpuinit void smp_cleanup_boot(void) | ||
600 | { | ||
601 | /* | ||
602 | * Paranoid: Set warm reset code and vector here back | ||
603 | * to default values. | ||
604 | */ | ||
605 | CMOS_WRITE(0, 0xf); | ||
606 | |||
607 | /* | ||
608 | * Reset trampoline flag | ||
609 | */ | ||
610 | *((volatile int *) phys_to_virt(0x467)) = 0; | ||
611 | } | ||
612 | |||
613 | /* | ||
614 | * Fall back to non SMP mode after errors. | 591 | * Fall back to non SMP mode after errors. |
615 | * | 592 | * |
616 | * RED-PEN audit/test this more. I bet there is more state messed up here. | 593 | * RED-PEN audit/test this more. I bet there is more state messed up here. |
@@ -827,7 +804,7 @@ extern void smp_checks(void); | |||
827 | */ | 804 | */ |
828 | void __init native_smp_cpus_done(unsigned int max_cpus) | 805 | void __init native_smp_cpus_done(unsigned int max_cpus) |
829 | { | 806 | { |
830 | smp_cleanup_boot(); | 807 | smpboot_restore_warm_reset_vector(); |
831 | 808 | ||
832 | Dprintk("Boot done.\n"); | 809 | Dprintk("Boot done.\n"); |
833 | 810 | ||