diff options
| -rw-r--r-- | arch/x86/include/asm/apic.h | 9 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/apic_flat_64.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/bigsmp_32.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/es7000_32.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/numaq_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/probe_32.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/summit_32.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_cluster.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_phys.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/smpboot.c | 11 |
11 files changed, 12 insertions, 23 deletions
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index 0fbf6f1520fa..4ef949c1972e 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h | |||
| @@ -313,7 +313,7 @@ struct apic { | |||
| 313 | void (*send_IPI_self)(int vector); | 313 | void (*send_IPI_self)(int vector); |
| 314 | 314 | ||
| 315 | /* wakeup_secondary_cpu */ | 315 | /* wakeup_secondary_cpu */ |
| 316 | int (*wakeup_cpu)(int apicid, unsigned long start_eip); | 316 | int (*wakeup_secondary_cpu)(int apicid, unsigned long start_eip); |
| 317 | 317 | ||
| 318 | int trampoline_phys_low; | 318 | int trampoline_phys_low; |
| 319 | int trampoline_phys_high; | 319 | int trampoline_phys_high; |
| @@ -344,13 +344,6 @@ extern struct apic *apic; | |||
| 344 | #ifdef CONFIG_SMP | 344 | #ifdef CONFIG_SMP |
| 345 | extern atomic_t init_deasserted; | 345 | extern atomic_t init_deasserted; |
| 346 | extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip); | 346 | extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip); |
| 347 | extern int wakeup_secondary_cpu_via_init(int apicid, unsigned long start_eip); | ||
| 348 | #else | ||
| 349 | static inline int | ||
| 350 | wakeup_secondary_cpu_via_init(int apicid, unsigned long start_eip) | ||
| 351 | { | ||
| 352 | return 0; | ||
| 353 | } | ||
| 354 | #endif | 347 | #endif |
| 355 | 348 | ||
| 356 | static inline u32 apic_read(u32 reg) | 349 | static inline u32 apic_read(u32 reg) |
diff --git a/arch/x86/kernel/apic/apic_flat_64.c b/arch/x86/kernel/apic/apic_flat_64.c index 00595bc2da8d..f933822dba18 100644 --- a/arch/x86/kernel/apic/apic_flat_64.c +++ b/arch/x86/kernel/apic/apic_flat_64.c | |||
| @@ -222,7 +222,6 @@ struct apic apic_flat = { | |||
| 222 | .send_IPI_all = flat_send_IPI_all, | 222 | .send_IPI_all = flat_send_IPI_all, |
| 223 | .send_IPI_self = apic_send_IPI_self, | 223 | .send_IPI_self = apic_send_IPI_self, |
| 224 | 224 | ||
| 225 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 226 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 225 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 227 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 226 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 228 | .wait_for_init_deassert = NULL, | 227 | .wait_for_init_deassert = NULL, |
| @@ -373,7 +372,6 @@ struct apic apic_physflat = { | |||
| 373 | .send_IPI_all = physflat_send_IPI_all, | 372 | .send_IPI_all = physflat_send_IPI_all, |
| 374 | .send_IPI_self = apic_send_IPI_self, | 373 | .send_IPI_self = apic_send_IPI_self, |
| 375 | 374 | ||
| 376 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 377 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 375 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 378 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 376 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 379 | .wait_for_init_deassert = NULL, | 377 | .wait_for_init_deassert = NULL, |
diff --git a/arch/x86/kernel/apic/bigsmp_32.c b/arch/x86/kernel/apic/bigsmp_32.c index 8c25917b51a0..69c512e23a9f 100644 --- a/arch/x86/kernel/apic/bigsmp_32.c +++ b/arch/x86/kernel/apic/bigsmp_32.c | |||
| @@ -256,7 +256,6 @@ struct apic apic_bigsmp = { | |||
| 256 | .send_IPI_all = bigsmp_send_IPI_all, | 256 | .send_IPI_all = bigsmp_send_IPI_all, |
| 257 | .send_IPI_self = default_send_IPI_self, | 257 | .send_IPI_self = default_send_IPI_self, |
| 258 | 258 | ||
| 259 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 260 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 259 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 261 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 260 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 262 | 261 | ||
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c index 9f6102fc87a1..b4838ed3f26a 100644 --- a/arch/x86/kernel/apic/es7000_32.c +++ b/arch/x86/kernel/apic/es7000_32.c | |||
| @@ -741,7 +741,7 @@ struct apic apic_es7000_cluster = { | |||
| 741 | .send_IPI_all = es7000_send_IPI_all, | 741 | .send_IPI_all = es7000_send_IPI_all, |
| 742 | .send_IPI_self = default_send_IPI_self, | 742 | .send_IPI_self = default_send_IPI_self, |
| 743 | 743 | ||
| 744 | .wakeup_cpu = wakeup_secondary_cpu_via_mip, | 744 | .wakeup_secondary_cpu = wakeup_secondary_cpu_via_mip, |
| 745 | 745 | ||
| 746 | .trampoline_phys_low = 0x467, | 746 | .trampoline_phys_low = 0x467, |
| 747 | .trampoline_phys_high = 0x469, | 747 | .trampoline_phys_high = 0x469, |
| @@ -806,8 +806,6 @@ struct apic apic_es7000 = { | |||
| 806 | .send_IPI_all = es7000_send_IPI_all, | 806 | .send_IPI_all = es7000_send_IPI_all, |
| 807 | .send_IPI_self = default_send_IPI_self, | 807 | .send_IPI_self = default_send_IPI_self, |
| 808 | 808 | ||
| 809 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 810 | |||
| 811 | .trampoline_phys_low = 0x467, | 809 | .trampoline_phys_low = 0x467, |
| 812 | .trampoline_phys_high = 0x469, | 810 | .trampoline_phys_high = 0x469, |
| 813 | 811 | ||
diff --git a/arch/x86/kernel/apic/numaq_32.c b/arch/x86/kernel/apic/numaq_32.c index c503c1799d63..a7f711f5110a 100644 --- a/arch/x86/kernel/apic/numaq_32.c +++ b/arch/x86/kernel/apic/numaq_32.c | |||
| @@ -538,7 +538,7 @@ struct apic apic_numaq = { | |||
| 538 | .send_IPI_all = numaq_send_IPI_all, | 538 | .send_IPI_all = numaq_send_IPI_all, |
| 539 | .send_IPI_self = default_send_IPI_self, | 539 | .send_IPI_self = default_send_IPI_self, |
| 540 | 540 | ||
| 541 | .wakeup_cpu = wakeup_secondary_cpu_via_nmi, | 541 | .wakeup_secondary_cpu = wakeup_secondary_cpu_via_nmi, |
| 542 | .trampoline_phys_low = NUMAQ_TRAMPOLINE_PHYS_LOW, | 542 | .trampoline_phys_low = NUMAQ_TRAMPOLINE_PHYS_LOW, |
| 543 | .trampoline_phys_high = NUMAQ_TRAMPOLINE_PHYS_HIGH, | 543 | .trampoline_phys_high = NUMAQ_TRAMPOLINE_PHYS_HIGH, |
| 544 | 544 | ||
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c index 13c6fc7dff99..141c99a1c264 100644 --- a/arch/x86/kernel/apic/probe_32.c +++ b/arch/x86/kernel/apic/probe_32.c | |||
| @@ -138,7 +138,6 @@ struct apic apic_default = { | |||
| 138 | .send_IPI_all = default_send_IPI_all, | 138 | .send_IPI_all = default_send_IPI_all, |
| 139 | .send_IPI_self = default_send_IPI_self, | 139 | .send_IPI_self = default_send_IPI_self, |
| 140 | 140 | ||
| 141 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 142 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 141 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 143 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 142 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 144 | 143 | ||
diff --git a/arch/x86/kernel/apic/summit_32.c b/arch/x86/kernel/apic/summit_32.c index 5a75d563f676..0a1135c5a6de 100644 --- a/arch/x86/kernel/apic/summit_32.c +++ b/arch/x86/kernel/apic/summit_32.c | |||
| @@ -574,7 +574,6 @@ struct apic apic_summit = { | |||
| 574 | .send_IPI_all = summit_send_IPI_all, | 574 | .send_IPI_all = summit_send_IPI_all, |
| 575 | .send_IPI_self = default_send_IPI_self, | 575 | .send_IPI_self = default_send_IPI_self, |
| 576 | 576 | ||
| 577 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 578 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 577 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 579 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 578 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 580 | 579 | ||
diff --git a/arch/x86/kernel/apic/x2apic_cluster.c b/arch/x86/kernel/apic/x2apic_cluster.c index 561a6b1042ae..8fb87b6dd633 100644 --- a/arch/x86/kernel/apic/x2apic_cluster.c +++ b/arch/x86/kernel/apic/x2apic_cluster.c | |||
| @@ -224,7 +224,6 @@ struct apic apic_x2apic_cluster = { | |||
| 224 | .send_IPI_all = x2apic_send_IPI_all, | 224 | .send_IPI_all = x2apic_send_IPI_all, |
| 225 | .send_IPI_self = x2apic_send_IPI_self, | 225 | .send_IPI_self = x2apic_send_IPI_self, |
| 226 | 226 | ||
| 227 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 228 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 227 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 229 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 228 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 230 | .wait_for_init_deassert = NULL, | 229 | .wait_for_init_deassert = NULL, |
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c index 785f8ee4b1df..23625b9f98b2 100644 --- a/arch/x86/kernel/apic/x2apic_phys.c +++ b/arch/x86/kernel/apic/x2apic_phys.c | |||
| @@ -213,7 +213,6 @@ struct apic apic_x2apic_phys = { | |||
| 213 | .send_IPI_all = x2apic_send_IPI_all, | 213 | .send_IPI_all = x2apic_send_IPI_all, |
| 214 | .send_IPI_self = x2apic_send_IPI_self, | 214 | .send_IPI_self = x2apic_send_IPI_self, |
| 215 | 215 | ||
| 216 | .wakeup_cpu = wakeup_secondary_cpu_via_init, | ||
| 217 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 216 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 218 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 217 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 219 | .wait_for_init_deassert = NULL, | 218 | .wait_for_init_deassert = NULL, |
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index 6d7b9d960ddc..7151de74a396 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
| @@ -288,7 +288,7 @@ struct apic apic_x2apic_uv_x = { | |||
| 288 | .send_IPI_all = uv_send_IPI_all, | 288 | .send_IPI_all = uv_send_IPI_all, |
| 289 | .send_IPI_self = uv_send_IPI_self, | 289 | .send_IPI_self = uv_send_IPI_self, |
| 290 | 290 | ||
| 291 | .wakeup_cpu = uv_wakeup_secondary, | 291 | .wakeup_secondary_cpu = uv_wakeup_secondary, |
| 292 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, | 292 | .trampoline_phys_low = DEFAULT_TRAMPOLINE_PHYS_LOW, |
| 293 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, | 293 | .trampoline_phys_high = DEFAULT_TRAMPOLINE_PHYS_HIGH, |
| 294 | .wait_for_init_deassert = NULL, | 294 | .wait_for_init_deassert = NULL, |
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 9b338aa03b40..249334f5080a 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c | |||
| @@ -742,7 +742,8 @@ static void __cpuinit do_fork_idle(struct work_struct *work) | |||
| 742 | /* | 742 | /* |
| 743 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad | 743 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad |
| 744 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. | 744 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. |
| 745 | * Returns zero if CPU booted OK, else error code from ->wakeup_cpu. | 745 | * Returns zero if CPU booted OK, else error code from |
| 746 | * ->wakeup_secondary_cpu. | ||
| 746 | */ | 747 | */ |
| 747 | static int __cpuinit do_boot_cpu(int apicid, int cpu) | 748 | static int __cpuinit do_boot_cpu(int apicid, int cpu) |
| 748 | { | 749 | { |
| @@ -829,9 +830,13 @@ do_rest: | |||
| 829 | } | 830 | } |
| 830 | 831 | ||
| 831 | /* | 832 | /* |
| 832 | * Starting actual IPI sequence... | 833 | * Kick the secondary CPU. Use the method in the APIC driver |
| 834 | * if it's defined - or use an INIT boot APIC message otherwise: | ||
| 833 | */ | 835 | */ |
| 834 | boot_error = apic->wakeup_cpu(apicid, start_ip); | 836 | if (apic->wakeup_secondary_cpu) |
| 837 | boot_error = apic->wakeup_secondary_cpu(apicid, start_ip); | ||
| 838 | else | ||
| 839 | boot_error = wakeup_secondary_cpu_via_init(apicid, start_ip); | ||
| 835 | 840 | ||
| 836 | if (!boot_error) { | 841 | if (!boot_error) { |
| 837 | /* | 842 | /* |
