This hasn't hit us in xenppc-unstable because we're downlevel, but
here's what I committed in the merge tree:
diff -r 030a041bbe90 xen/arch/powerpc/boot_of.c
--- a/xen/arch/powerpc/boot_of.c Tue Aug 29 06:53:58 2006 -0400
+++ b/xen/arch/powerpc/boot_of.c Tue Aug 29 17:45:56 2006 -0500
@@ -993,6 +993,7 @@ static int __init boot_of_cpus(void)
/* We want a continuous logical cpu number space. */
cpu_set(0, cpu_present_map);
cpu_set(0, cpu_online_map);
+ cpu_set(0, cpu_possible_map);
/* Spin up all CPUS, even if there are more than NR_CPUS, because
* Open Firmware has them spinning on cache lines which will
@@ -1039,8 +1040,10 @@ static int __init boot_of_cpus(void)
} while (pong == ping);
of_printf("pong = 0x%x\n", pong);
- if (pong != ping)
+ if (pong != ping) {
cpu_set(logical, cpu_present_map);
+ cpu_set(logical, cpu_possible_map);
+ }
cpu = of_getpeer(cpu);
}
diff -r 030a041bbe90 xen/arch/powerpc/setup.c
--- a/xen/arch/powerpc/setup.c Tue Aug 29 06:53:58 2006 -0400
+++ b/xen/arch/powerpc/setup.c Tue Aug 29 17:45:37 2006 -0500
@@ -74,6 +74,7 @@ cpumask_t cpu_sibling_map[NR_CPUS] __rea
cpumask_t cpu_sibling_map[NR_CPUS] __read_mostly;
cpumask_t cpu_online_map; /* missing ifdef in schedule.c */
cpumask_t cpu_present_map;
+cpumask_t cpu_possible_map;
/* XXX get this from ISA node in device tree */
ulong isa_io_base;
@@ -254,6 +255,7 @@ static int kick_secondary_cpus(int maxcp
break;
init_parea(cpuid);
cpu_set(cpuid, cpu_online_map);
+ cpu_set(cpuid, cpu_possible_map);
}
return 0;
I'm actually not sure why we need to set secondary cpus in 'possible' in
both kick_secondary_cpus() and boot_of_cpus(), but this gets me booting.
--
Hollis Blanchard
IBM Linux Technology Center
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|