diff options
author | Milton Miller <miltonm@bga.com> | 2011-05-10 15:29:42 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-05-19 01:31:05 -0400 |
commit | 1ece355b6825b7c61d1dc39a5c6cf49dc746e193 (patch) | |
tree | 8302fa4a63addc8a621d4dcd49a487f6a77ca393 /arch/powerpc/platforms/powermac | |
parent | 23d72bfd8f9f24aa9efafed3586a99f5669c23d7 (diff) |
powerpc: Add kconfig for muxed smp ipi support
Compile the new smp ipi mux and demux code only if a platform
will make use of it. The new config is selected as required.
The new cause_ipi smp op is only available conditionally to point out
configs where the select is required; this makes setting the op an
immediate fail instead of a deferred unresolved symbol at link.
This also creates a new config for power surge powermac upgrade support
that can be disabled in expert mode but is default on.
I also removed the depends / default y on CONFIG_XICS since it is selected
by PSERIES.
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powermac')
-rw-r--r-- | arch/powerpc/platforms/powermac/Kconfig | 11 | ||||
-rw-r--r-- | arch/powerpc/platforms/powermac/pic.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/powermac/smp.c | 8 |
3 files changed, 16 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/powermac/Kconfig b/arch/powerpc/platforms/powermac/Kconfig index 1e1a0873e1dd..1afd10f67858 100644 --- a/arch/powerpc/platforms/powermac/Kconfig +++ b/arch/powerpc/platforms/powermac/Kconfig | |||
@@ -18,4 +18,13 @@ config PPC_PMAC64 | |||
18 | select PPC_970_NAP | 18 | select PPC_970_NAP |
19 | default y | 19 | default y |
20 | 20 | ||
21 | 21 | config PPC_PMAC32_PSURGE | |
22 | bool "Support for powersurge upgrade cards" if EXPERT | ||
23 | depends on SMP && PPC32 && PPC_PMAC | ||
24 | select PPC_SMP_MUXED_IPI | ||
25 | default y | ||
26 | help | ||
27 | The powersurge cpu boards can be used in the generation | ||
28 | of powermacs that have a socket for an upgradeable cpu card, | ||
29 | including the 7500, 8500, 9500, 9600. Support exists for | ||
30 | both dual and quad socket upgrade cards. | ||
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c index 2f34ad04029f..b706cb3ad99c 100644 --- a/arch/powerpc/platforms/powermac/pic.c +++ b/arch/powerpc/platforms/powermac/pic.c | |||
@@ -239,7 +239,7 @@ static unsigned int pmac_pic_get_irq(void) | |||
239 | unsigned long bits = 0; | 239 | unsigned long bits = 0; |
240 | unsigned long flags; | 240 | unsigned long flags; |
241 | 241 | ||
242 | #ifdef CONFIG_SMP | 242 | #ifdef CONFIG_PPC_PMAC32_PSURGE |
243 | void psurge_smp_message_recv(void); | 243 | void psurge_smp_message_recv(void); |
244 | 244 | ||
245 | /* IPI's are a hack on the powersurge -- Cort */ | 245 | /* IPI's are a hack on the powersurge -- Cort */ |
@@ -247,7 +247,7 @@ static unsigned int pmac_pic_get_irq(void) | |||
247 | psurge_smp_message_recv(); | 247 | psurge_smp_message_recv(); |
248 | return NO_IRQ_IGNORE; /* ignore, already handled */ | 248 | return NO_IRQ_IGNORE; /* ignore, already handled */ |
249 | } | 249 | } |
250 | #endif /* CONFIG_SMP */ | 250 | #endif /* CONFIG_PPC_PMAC32_PSURGE */ |
251 | raw_spin_lock_irqsave(&pmac_pic_lock, flags); | 251 | raw_spin_lock_irqsave(&pmac_pic_lock, flags); |
252 | for (irq = max_real_irqs; (irq -= 32) >= 0; ) { | 252 | for (irq = max_real_irqs; (irq -= 32) >= 0; ) { |
253 | int i = irq >> 5; | 253 | int i = irq >> 5; |
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index a3401071abfb..67b6e1432be2 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c | |||
@@ -70,7 +70,7 @@ static void (*pmac_tb_freeze)(int freeze); | |||
70 | static u64 timebase; | 70 | static u64 timebase; |
71 | static int tb_req; | 71 | static int tb_req; |
72 | 72 | ||
73 | #ifdef CONFIG_PPC32 | 73 | #ifdef CONFIG_PPC_PMAC32_PSURGE |
74 | 74 | ||
75 | /* | 75 | /* |
76 | * Powersurge (old powermac SMP) support. | 76 | * Powersurge (old powermac SMP) support. |
@@ -420,7 +420,7 @@ struct smp_ops_t psurge_smp_ops = { | |||
420 | .give_timebase = smp_psurge_give_timebase, | 420 | .give_timebase = smp_psurge_give_timebase, |
421 | .take_timebase = smp_psurge_take_timebase, | 421 | .take_timebase = smp_psurge_take_timebase, |
422 | }; | 422 | }; |
423 | #endif /* CONFIG_PPC32 - actually powersurge support */ | 423 | #endif /* CONFIG_PPC_PMAC32_PSURGE */ |
424 | 424 | ||
425 | /* | 425 | /* |
426 | * Core 99 and later support | 426 | * Core 99 and later support |
@@ -980,7 +980,7 @@ void __init pmac_setup_smp(void) | |||
980 | of_node_put(np); | 980 | of_node_put(np); |
981 | smp_ops = &core99_smp_ops; | 981 | smp_ops = &core99_smp_ops; |
982 | } | 982 | } |
983 | #ifdef CONFIG_PPC32 | 983 | #ifdef CONFIG_PPC_PMAC32_PSURGE |
984 | else { | 984 | else { |
985 | /* We have to set bits in cpu_possible_mask here since the | 985 | /* We have to set bits in cpu_possible_mask here since the |
986 | * secondary CPU(s) aren't in the device tree. Various | 986 | * secondary CPU(s) aren't in the device tree. Various |
@@ -993,7 +993,7 @@ void __init pmac_setup_smp(void) | |||
993 | set_cpu_possible(cpu, true); | 993 | set_cpu_possible(cpu, true); |
994 | smp_ops = &psurge_smp_ops; | 994 | smp_ops = &psurge_smp_ops; |
995 | } | 995 | } |
996 | #endif /* CONFIG_PPC32 */ | 996 | #endif /* CONFIG_PPC_PMAC32_PSURGE */ |
997 | 997 | ||
998 | #ifdef CONFIG_HOTPLUG_CPU | 998 | #ifdef CONFIG_HOTPLUG_CPU |
999 | ppc_md.cpu_die = pmac_cpu_die; | 999 | ppc_md.cpu_die = pmac_cpu_die; |