Don't allow cpu hotplug on systems lacking XICS interrupt controller, since current code is hardcoded for it.
Signed-off-by: Olof Johansson <[EMAIL PROTECTED]> --- On Wed, Oct 10, 2007 at 10:18:26AM +1000, Stephen Rothwell wrote: > > + struct device_node *np; > > + const char *typep; > > + > > + for (np = NULL; (np = of_find_node_by_name(np, > > + "interrupt-controller"));) { > > + typep = of_get_property(np, "compatible", NULL); > > + if (strstr(typep, "open-pic")) { > > + printk(KERN_INFO "CPU Hotplug not supported on " > > + "systems using MPIC\n"); > > You need an of_node_put(np) here. Grmbl, you're right. pseries_discover_pic() doesn't have one, that's where I took the above logic from. So we're obviously already leaking device node references. Still, no reason to make it worse. -Olof diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c index 9711eb0..ae85fc0 100644 --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c @@ -252,6 +252,21 @@ static struct notifier_block pseries_smp_nb = { static int __init pseries_cpu_hotplug_init(void) { + struct device_node *np; + const char *typep; + + for (np = NULL; (np = of_find_node_by_name(np, + "interrupt-controller"));) { + typep = of_get_property(np, "compatible", NULL); + if (strstr(typep, "open-pic")) { + of_node_put(np); + + printk(KERN_INFO "CPU Hotplug not supported on " + "systems using MPIC\n"); + return 0; + } + } + rtas_stop_self_args.token = rtas_token("stop-self"); qcss_tok = rtas_token("query-cpu-stopped-state"); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev