diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/smp.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/smp.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c index a509c5292a67..fc72bfce7320 100644 --- a/arch/powerpc/platforms/pseries/smp.c +++ b/arch/powerpc/platforms/pseries/smp.c | |||
@@ -44,10 +44,11 @@ | |||
44 | #include <asm/mpic.h> | 44 | #include <asm/mpic.h> |
45 | #include <asm/vdso_datapage.h> | 45 | #include <asm/vdso_datapage.h> |
46 | #include <asm/cputhreads.h> | 46 | #include <asm/cputhreads.h> |
47 | #include <asm/mpic.h> | ||
48 | #include <asm/xics.h> | ||
47 | 49 | ||
48 | #include "plpar_wrappers.h" | 50 | #include "plpar_wrappers.h" |
49 | #include "pseries.h" | 51 | #include "pseries.h" |
50 | #include "xics.h" | ||
51 | #include "offline_states.h" | 52 | #include "offline_states.h" |
52 | 53 | ||
53 | 54 | ||
@@ -136,7 +137,6 @@ out: | |||
136 | return 1; | 137 | return 1; |
137 | } | 138 | } |
138 | 139 | ||
139 | #ifdef CONFIG_XICS | ||
140 | static void __devinit smp_xics_setup_cpu(int cpu) | 140 | static void __devinit smp_xics_setup_cpu(int cpu) |
141 | { | 141 | { |
142 | if (cpu != boot_cpuid) | 142 | if (cpu != boot_cpuid) |
@@ -151,7 +151,6 @@ static void __devinit smp_xics_setup_cpu(int cpu) | |||
151 | set_default_offline_state(cpu); | 151 | set_default_offline_state(cpu); |
152 | #endif | 152 | #endif |
153 | } | 153 | } |
154 | #endif /* CONFIG_XICS */ | ||
155 | 154 | ||
156 | static void __devinit smp_pSeries_kick_cpu(int nr) | 155 | static void __devinit smp_pSeries_kick_cpu(int nr) |
157 | { | 156 | { |
@@ -197,23 +196,21 @@ static int smp_pSeries_cpu_bootable(unsigned int nr) | |||
197 | 196 | ||
198 | return 1; | 197 | return 1; |
199 | } | 198 | } |
200 | #ifdef CONFIG_MPIC | 199 | |
201 | static struct smp_ops_t pSeries_mpic_smp_ops = { | 200 | static struct smp_ops_t pSeries_mpic_smp_ops = { |
202 | .message_pass = smp_mpic_message_pass, | 201 | .message_pass = smp_mpic_message_pass, |
203 | .probe = smp_mpic_probe, | 202 | .probe = smp_mpic_probe, |
204 | .kick_cpu = smp_pSeries_kick_cpu, | 203 | .kick_cpu = smp_pSeries_kick_cpu, |
205 | .setup_cpu = smp_mpic_setup_cpu, | 204 | .setup_cpu = smp_mpic_setup_cpu, |
206 | }; | 205 | }; |
207 | #endif | 206 | |
208 | #ifdef CONFIG_XICS | ||
209 | static struct smp_ops_t pSeries_xics_smp_ops = { | 207 | static struct smp_ops_t pSeries_xics_smp_ops = { |
210 | .message_pass = smp_xics_message_pass, | 208 | .message_pass = NULL, /* Filled at runtime by xics_smp_probe() */ |
211 | .probe = smp_xics_probe, | 209 | .probe = xics_smp_probe, |
212 | .kick_cpu = smp_pSeries_kick_cpu, | 210 | .kick_cpu = smp_pSeries_kick_cpu, |
213 | .setup_cpu = smp_xics_setup_cpu, | 211 | .setup_cpu = smp_xics_setup_cpu, |
214 | .cpu_bootable = smp_pSeries_cpu_bootable, | 212 | .cpu_bootable = smp_pSeries_cpu_bootable, |
215 | }; | 213 | }; |
216 | #endif | ||
217 | 214 | ||
218 | /* This is called very early */ | 215 | /* This is called very early */ |
219 | static void __init smp_init_pseries(void) | 216 | static void __init smp_init_pseries(void) |
@@ -245,14 +242,12 @@ static void __init smp_init_pseries(void) | |||
245 | pr_debug(" <- smp_init_pSeries()\n"); | 242 | pr_debug(" <- smp_init_pSeries()\n"); |
246 | } | 243 | } |
247 | 244 | ||
248 | #ifdef CONFIG_MPIC | ||
249 | void __init smp_init_pseries_mpic(void) | 245 | void __init smp_init_pseries_mpic(void) |
250 | { | 246 | { |
251 | smp_ops = &pSeries_mpic_smp_ops; | 247 | smp_ops = &pSeries_mpic_smp_ops; |
252 | 248 | ||
253 | smp_init_pseries(); | 249 | smp_init_pseries(); |
254 | } | 250 | } |
255 | #endif | ||
256 | 251 | ||
257 | void __init smp_init_pseries_xics(void) | 252 | void __init smp_init_pseries_xics(void) |
258 | { | 253 | { |