From: Paul Mackerras Recently I tried booting a UP kernel on a 1-processor logical partition on a POWER4 system. It failed because the CPU we happened to be running on was CPU 2, but hard_smp_processor_id() is defined to 0 for !CONFIG_SMP. (Note that this code runs quite early, as part of init_IRQ, so hard_smp_processor_id() should be the physical ID of the boot cpu.) This patch does a minimal fix to make it work. I think this patch should go in 2.6.10. Ultimately I think the hard_smp_processor_id() definition should be removed from include/linux/smp.h, but that carries a risk of breaking other architectures and probably shouldn't be done pre 2.6.10. Signed-off-by: Paul Mackerras Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc64/kernel/xics.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/ppc64/kernel/xics.c~ppc64-make-up-kernel-run-on-power4-logical-partition arch/ppc64/kernel/xics.c --- 25/arch/ppc64/kernel/xics.c~ppc64-make-up-kernel-run-on-power4-logical-partition 2004-12-09 17:12:37.003542640 -0800 +++ 25-akpm/arch/ppc64/kernel/xics.c 2004-12-09 17:12:37.008541880 -0800 @@ -504,7 +504,7 @@ nextnode: np; np = of_find_node_by_type(np, "cpu")) { ireg = (uint *)get_property(np, "reg", &ilen); - if (ireg && ireg[0] == hard_smp_processor_id()) { + if (ireg && ireg[0] == boot_cpuid_phys) { ireg = (uint *)get_property(np, "ibm,ppc-interrupt-gserver#s", &ilen); i = ilen / sizeof(int); _