[POWERPC] Don't enable cpu hotplug on pSeries machines with MPIC
authorOlof Johansson <olof@lixom.net>
Wed, 10 Oct 2007 00:38:24 +0000 (10:38 +1000)
committerPaul Mackerras <paulus@samba.org>
Thu, 11 Oct 2007 11:06:06 +0000 (21:06 +1000)
Don't allow cpu hotplug on systems lacking XICS interrupt controller
(i.e. with an MPIC interrupt controller), since the current pSeries
platform code is hardcoded for XICS.

This works around the bug reported by Paul Mackerras where the
disable_nonboot_cpus() call recently added to the shutdown path will
cause an oops on older pSeries machines.

Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/pseries/hotplug-cpu.c

index 9711eb0d549645fee11f198fcb1cdf4ddc9f8860..fc48b96c81bff2ee1ec79eef9d1f13f62b6693cf 100644 (file)
@@ -252,6 +252,20 @@ static struct notifier_block pseries_smp_nb = {
 
 static int __init pseries_cpu_hotplug_init(void)
 {
+       struct device_node *np;
+       const char *typep;
+
+       for_each_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");