x86: UV startup of slave cpus
This patch changes smpboot.c so that it can start slave cpus running in UV non-unique apicid mode. The SIPI must be sent using a UV-specific mechanism. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:

committed by
Ingo Molnar

parent
098cb7f27e
commit
34d0559178
@@ -61,6 +61,7 @@
|
||||
#include <asm/mtrr.h>
|
||||
#include <asm/nmi.h>
|
||||
#include <asm/vmi.h>
|
||||
#include <asm/genapic.h>
|
||||
#include <linux/mc146818rtc.h>
|
||||
|
||||
#include <mach_apic.h>
|
||||
@@ -677,6 +678,12 @@ wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
|
||||
unsigned long send_status, accept_status = 0;
|
||||
int maxlvt, num_starts, j;
|
||||
|
||||
if (get_uv_system_type() == UV_NON_UNIQUE_APIC) {
|
||||
send_status = uv_wakeup_secondary(phys_apicid, start_eip);
|
||||
atomic_set(&init_deasserted, 1);
|
||||
return send_status;
|
||||
}
|
||||
|
||||
/*
|
||||
* Be paranoid about clearing APIC errors.
|
||||
*/
|
||||
@@ -918,16 +925,19 @@ do_rest:
|
||||
|
||||
atomic_set(&init_deasserted, 0);
|
||||
|
||||
Dprintk("Setting warm reset code and vector.\n");
|
||||
if (get_uv_system_type() != UV_NON_UNIQUE_APIC) {
|
||||
|
||||
store_NMI_vector(&nmi_high, &nmi_low);
|
||||
Dprintk("Setting warm reset code and vector.\n");
|
||||
|
||||
smpboot_setup_warm_reset_vector(start_ip);
|
||||
/*
|
||||
* Be paranoid about clearing APIC errors.
|
||||
*/
|
||||
apic_write(APIC_ESR, 0);
|
||||
apic_read(APIC_ESR);
|
||||
store_NMI_vector(&nmi_high, &nmi_low);
|
||||
|
||||
smpboot_setup_warm_reset_vector(start_ip);
|
||||
/*
|
||||
* Be paranoid about clearing APIC errors.
|
||||
*/
|
||||
apic_write(APIC_ESR, 0);
|
||||
apic_read(APIC_ESR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Starting actual IPI sequence...
|
||||
@@ -966,7 +976,8 @@ do_rest:
|
||||
else
|
||||
/* trampoline code not run */
|
||||
printk(KERN_ERR "Not responding.\n");
|
||||
inquire_remote_apic(apicid);
|
||||
if (get_uv_system_type() != UV_NON_UNIQUE_APIC)
|
||||
inquire_remote_apic(apicid);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user