From 2107ca1e7900005536c7181bbbf0a7008512b23a Mon Sep 17 00:00:00 2001 From: Glauber de Oliveira Costa Date: Wed, 19 Mar 2008 14:25:32 -0300 Subject: [PATCH] --- yaml --- r: 88818 b: refs/heads/master c: eb44d0a2a9c4d64ed89044fcf1f75e6a27c42ea7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/smpboot_64.c | 29 +++-------------------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/[refs] b/[refs] index a737cfd94bc7..4bb970c25e73 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d77010f8c93b4d41ffd71c7ad9d07fc1668cd5a +refs/heads/master: eb44d0a2a9c4d64ed89044fcf1f75e6a27c42ea7 diff --git a/trunk/arch/x86/kernel/smpboot_64.c b/trunk/arch/x86/kernel/smpboot_64.c index c6c993f4c415..b9384b3af017 100644 --- a/trunk/arch/x86/kernel/smpboot_64.c +++ b/trunk/arch/x86/kernel/smpboot_64.c @@ -61,6 +61,7 @@ #include #include +#include /* Set when the idlers are all forked */ int smp_threads_ready; @@ -517,14 +518,7 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid) Dprintk("Setting warm reset code and vector.\n"); - CMOS_WRITE(0xa, 0xf); - local_flush_tlb(); - Dprintk("1.\n"); - *((volatile unsigned short *) phys_to_virt(0x469)) = start_rip >> 4; - Dprintk("2.\n"); - *((volatile unsigned short *) phys_to_virt(0x467)) = start_rip & 0xf; - Dprintk("3.\n"); - + smpboot_setup_warm_reset_vector(start_rip); /* * Be paranoid about clearing APIC errors. */ @@ -593,23 +587,6 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid) cycles_t cacheflush_time; unsigned long cache_decay_ticks; -/* - * Cleanup possible dangling ends... - */ -static __cpuinit void smp_cleanup_boot(void) -{ - /* - * Paranoid: Set warm reset code and vector here back - * to default values. - */ - CMOS_WRITE(0, 0xf); - - /* - * Reset trampoline flag - */ - *((volatile int *) phys_to_virt(0x467)) = 0; -} - /* * Fall back to non SMP mode after errors. * @@ -827,7 +804,7 @@ extern void smp_checks(void); */ void __init native_smp_cpus_done(unsigned int max_cpus) { - smp_cleanup_boot(); + smpboot_restore_warm_reset_vector(); Dprintk("Boot done.\n");