 arch/ppc/kernel/irq.c |   25 +++++++++++--------------
 1 files changed, 11 insertions(+), 14 deletions(-)

diff -puN arch/ppc/kernel/irq.c~cpumask-ppc-fixes arch/ppc/kernel/irq.c
--- 25/arch/ppc/kernel/irq.c~cpumask-ppc-fixes	2003-08-05 17:28:05.000000000 -0700
+++ 25-akpm/arch/ppc/kernel/irq.c	2003-08-05 17:28:05.000000000 -0700
@@ -540,18 +540,6 @@ unsigned int probe_irq_mask(unsigned lon
 	return 0;
 }
 
-void __init init_IRQ(void)
-{
-	static int once = 0;
-
-	if ( once )
-		return;
-	else
-		once++;
-	
-	ppc_md.init_IRQ();
-}
-
 #ifdef CONFIG_SMP
 void synchronize_irq(unsigned int irq)
 {
@@ -570,8 +558,7 @@ static struct proc_dir_entry *smp_affini
 #define DEFAULT_CPU_AFFINITY cpumask_of_cpu(0)
 #endif
 
-cpumask_t irq_affinity [NR_IRQS] =
-	{ [0 ... NR_IRQS-1] = DEFAULT_CPU_AFFINITY };
+cpumask_t irq_affinity [NR_IRQS];
 
 #define HEX_DIGITS (2*sizeof(cpumask_t))
 
@@ -757,3 +744,13 @@ irqreturn_t no_action(int irq, void *dev
 {
 	return IRQ_NONE;
 }
+
+void __init init_IRQ(void)
+{
+	int i;
+
+	for (i = 0; i < NR_IRQS; ++i)
+		irq_affinity[i] = DEFAULT_CPU_AFFINITY;
+
+	ppc_md.init_IRQ();
+}

_
