diff options
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 24 | 
1 files changed, 14 insertions, 10 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 58d24ef917d..2fecda69ee6 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -504,7 +504,7 @@ void __inquire_remote_apic(int apicid)   * INIT, INIT, STARTUP sequence will reset the chip hard for us, and this   * won't ... remember to clear down the APIC, etc later.   */ -int __devinit +int __cpuinit  wakeup_secondary_cpu_via_nmi(int logical_apicid, unsigned long start_eip)  {  	unsigned long send_status, accept_status = 0; @@ -538,7 +538,7 @@ wakeup_secondary_cpu_via_nmi(int logical_apicid, unsigned long start_eip)  	return (send_status | accept_status);  } -int __devinit +static int __cpuinit  wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)  {  	unsigned long send_status, accept_status = 0; @@ -822,10 +822,12 @@ do_rest:  	/* mark "stuck" area as not stuck */  	*((volatile unsigned long *)trampoline_base) = 0; -	/* -	 * Cleanup possible dangling ends... -	 */ -	smpboot_restore_warm_reset_vector(); +	if (get_uv_system_type() != UV_NON_UNIQUE_APIC) { +		/* +		 * Cleanup possible dangling ends... +		 */ +		smpboot_restore_warm_reset_vector(); +	}  	return boot_error;  } @@ -871,7 +873,7 @@ int __cpuinit native_cpu_up(unsigned int cpu)  	err = do_boot_cpu(apicid, cpu); -	zap_low_mappings(); +	zap_low_mappings(false);  	low_mappings = 0;  #else  	err = do_boot_cpu(apicid, cpu); @@ -990,10 +992,12 @@ static int __init smp_sanity_check(unsigned max_cpus)  	 */  	if (APIC_INTEGRATED(apic_version[boot_cpu_physical_apicid]) &&  	    !cpu_has_apic) { -		printk(KERN_ERR "BIOS bug, local APIC #%d not detected!...\n", -			boot_cpu_physical_apicid); -		printk(KERN_ERR "... forcing use of dummy APIC emulation." +		if (!disable_apic) { +			pr_err("BIOS bug, local APIC #%d not detected!...\n", +				boot_cpu_physical_apicid); +			pr_err("... forcing use of dummy APIC emulation."  				"(tell your hw vendor)\n"); +		}  		smpboot_clear_io_apic();  		arch_disable_smp_support();  		return -1;  |