X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fpowerpc%2Fplatforms%2Fpseries%2Fsmp.c;h=3cf78a6cd27c32d55659cec05350ed28f8835a86;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=ac61098ff401ca90c586243cb7f3b17eacdf5a1a;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c index ac61098ff..3cf78a6cd 100644 --- a/arch/powerpc/platforms/pseries/smp.c +++ b/arch/powerpc/platforms/pseries/smp.c @@ -14,6 +14,7 @@ #undef DEBUG +#include #include #include #include @@ -416,12 +417,27 @@ static struct smp_ops_t pSeries_xics_smp_ops = { #endif /* This is called very early */ -static void __init smp_init_pseries(void) +void __init smp_init_pSeries(void) { int i; DBG(" -> smp_init_pSeries()\n"); + switch (ppc64_interrupt_controller) { +#ifdef CONFIG_MPIC + case IC_OPEN_PIC: + smp_ops = &pSeries_mpic_smp_ops; + break; +#endif +#ifdef CONFIG_XICS + case IC_PPC_XIC: + smp_ops = &pSeries_xics_smp_ops; + break; +#endif + default: + panic("Invalid interrupt controller"); + } + #ifdef CONFIG_HOTPLUG_CPU smp_ops->cpu_disable = pSeries_cpu_disable; smp_ops->cpu_die = pSeries_cpu_die; @@ -456,18 +472,3 @@ static void __init smp_init_pseries(void) DBG(" <- smp_init_pSeries()\n"); } -#ifdef CONFIG_MPIC -void __init smp_init_pseries_mpic(void) -{ - smp_ops = &pSeries_mpic_smp_ops; - - smp_init_pseries(); -} -#endif - -void __init smp_init_pseries_xics(void) -{ - smp_ops = &pSeries_xics_smp_ops; - - smp_init_pseries(); -}