aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powermac
diff options
context:
space:
mode:
authorMilton Miller <miltonm@bga.com>2011-05-10 15:29:42 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-05-19 01:31:05 -0400
commit1ece355b6825b7c61d1dc39a5c6cf49dc746e193 (patch)
tree8302fa4a63addc8a621d4dcd49a487f6a77ca393 /arch/powerpc/platforms/powermac
parent23d72bfd8f9f24aa9efafed3586a99f5669c23d7 (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/Kconfig11
-rw-r--r--arch/powerpc/platforms/powermac/pic.c4
-rw-r--r--arch/powerpc/platforms/powermac/smp.c8
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 21config 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);
70static u64 timebase; 70static u64 timebase;
71static int tb_req; 71static 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;