From: Paul Mackerras <paulus@samba.org>

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 <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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);
_