All of lore.kernel.org
 help / color / mirror / Atom feed
From: William Lee Irwin III <wli@holomorphy.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, sparclinux@vger.kernel.org
Subject: Re: 2.6.7-rc3-mm1
Date: Wed, 09 Jun 2004 17:59:10 +0000	[thread overview]
Message-ID: <20040609175910.GS1444@holomorphy.com> (raw)
In-Reply-To: <20040609015001.31d249ca.akpm@osdl.org>

On Wed, Jun 09, 2004 at 01:50:01AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7-rc3/2.6.7-rc3-mm1/
> - Included the dreaded cpumask rework.
> - Lots of little fixes.
> - Added support for the NX (no execute) pagetable flag on ia32.

Last time I tested this on sparc64 (the only current user of ->mask) it
appeared to work. The following patch makes irqaction's ->mask a cpumask
as it was intended to be and wraps up the rest of the sweep. Only struct
irqaction is usefully greppable, so there may be some assignments to
->mask missing still. This removes more code than it adds.

Compiletested i386 and sparc64, runtime tested on sparc64 in a prior
incarnation. vs. 2.6.7-rc3-mm1


-- wli

Index: mm1-2.6.7-rc3/include/linux/interrupt.h
=================================--- mm1-2.6.7-rc3.orig/include/linux/interrupt.h	2004-06-07 12:14:25.000000000 -0700
+++ mm1-2.6.7-rc3/include/linux/interrupt.h	2004-06-09 10:40:12.684107000 -0700
@@ -7,6 +7,7 @@
 #include <linux/linkage.h>
 #include <linux/bitops.h>
 #include <linux/preempt.h>
+#include <linux/cpumask.h>
 #include <asm/atomic.h>
 #include <asm/hardirq.h>
 #include <asm/ptrace.h>
@@ -35,7 +36,7 @@
 struct irqaction {
 	irqreturn_t (*handler)(int, void *, struct pt_regs *);
 	unsigned long flags;
-	unsigned long mask;
+	cpumask_t mask;
 	const char *name;
 	void *dev_id;
 	struct irqaction *next;
Index: mm1-2.6.7-rc3/include/linux/cpumask.h
=================================--- mm1-2.6.7-rc3.orig/include/linux/cpumask.h	2004-06-09 07:11:49.439889000 -0700
+++ mm1-2.6.7-rc3/include/linux/cpumask.h	2004-06-09 10:44:34.137360000 -0700
@@ -248,9 +248,9 @@
 #endif
 
 #define CPU_MASK_NONE							\
-{ {									\
+((cpumask_t){ {								\
 	[0 ... BITS_TO_LONGS(NR_CPUS)-1] =  0UL				\
-} }
+} })
 
 #define cpus_addr(src) ((src).bits)
 
Index: mm1-2.6.7-rc3/arch/ppc/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/ppc/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ppc/kernel/irq.c	2004-06-09 10:40:12.760095000 -0700
@@ -241,7 +241,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;			
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = dev_id;
 	action->next = NULL;
Index: mm1-2.6.7-rc3/arch/alpha/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/alpha/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/alpha/kernel/irq.c	2004-06-09 10:40:12.844083000 -0700
@@ -457,7 +457,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/arm/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/arm/kernel/irq.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm/kernel/irq.c	2004-06-09 10:40:12.895075000 -0700
@@ -674,7 +674,7 @@
 
 	action->handler = handler;
 	action->flags = irq_flags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/arm/mach-clps7500/core.c
=================================--- mm1-2.6.7-rc3.orig/arch/arm/mach-clps7500/core.c	2004-06-07 12:14:33.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm/mach-clps7500/core.c	2004-06-09 10:40:12.944067000 -0700
@@ -187,7 +187,7 @@
 	.unmask	= cl7500_no_action,
 };
 
-static struct irqaction irq_isa = { no_action, 0, 0, "isa", NULL, NULL };
+static struct irqaction irq_isa = { no_action, 0, CPU_MASK_NONE, "isa", NULL, NULL };
 
 static void __init clps7500_init_irq(void)
 {
Index: mm1-2.6.7-rc3/arch/arm26/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/arm26/kernel/irq.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm26/kernel/irq.c	2004-06-09 10:40:13.024055000 -0700
@@ -549,7 +549,7 @@
 
 	action->handler = handler;
 	action->flags = irq_flags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/cris/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/cris/kernel/irq.c	2004-06-07 12:15:12.000000000 -0700
+++ mm1-2.6.7-rc3/arch/cris/kernel/irq.c	2004-06-09 10:40:13.065049000 -0700
@@ -240,7 +240,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/cris/arch-v10/kernel/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/cris/arch-v10/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/cris/arch-v10/kernel/time.c	2004-06-09 10:40:13.155035000 -0700
@@ -253,7 +253,7 @@
  */
 
 static struct irqaction irq2  = { timer_interrupt, SA_SHIRQ | SA_INTERRUPT,
-				  0, "timer", NULL, NULL};
+				  CPU_MASK_NONE, "timer", NULL, NULL};
 
 void __init
 time_init(void)
Index: mm1-2.6.7-rc3/arch/i386/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/i386/kernel/irq.c	2004-06-09 07:10:49.966930000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/irq.c	2004-06-09 10:40:13.221025000 -0700
@@ -654,7 +654,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/i386/kernel/i8259.c
=================================--- mm1-2.6.7-rc3.orig/arch/i386/kernel/i8259.c	2004-06-09 07:11:34.007235000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/i8259.c	2004-06-09 10:40:13.230024000 -0700
@@ -333,7 +333,7 @@
  * New motherboards sometimes make IRQ 13 be a PCI interrupt,
  * so allow interrupt sharing.
  */
-static struct irqaction fpu_irq = { math_error_irq, 0, 0, "fpu", NULL, NULL };
+static struct irqaction fpu_irq = { math_error_irq, 0, CPU_MASK_NONE, "fpu", NULL, NULL };
 
 void __init init_ISA_irqs (void)
 {
Index: mm1-2.6.7-rc3/arch/i386/mach-default/setup.c
=================================--- mm1-2.6.7-rc3.orig/arch/i386/mach-default/setup.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/i386/mach-default/setup.c	2004-06-09 10:40:13.267018000 -0700
@@ -27,7 +27,7 @@
 /*
  * IRQ2 is cascade interrupt to second interrupt controller
  */
-static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq2 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 /**
  * intr_init_hook - post gate setup interrupt initialisation
@@ -71,7 +71,7 @@
 {
 }
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 /**
  * time_init_hook - do any specific initialisations for the system timer.
Index: mm1-2.6.7-rc3/arch/i386/mach-pc9800/setup.c
=================================--- mm1-2.6.7-rc3.orig/arch/i386/mach-pc9800/setup.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/i386/mach-pc9800/setup.c	2004-06-09 10:40:13.287015000 -0700
@@ -34,7 +34,7 @@
 /*
  * IRQ7 is cascade interrupt to second interrupt controller
  */
-static struct irqaction irq7 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq7 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 /**
  * intr_init_hook - post gate setup interrupt initialisation
@@ -82,7 +82,7 @@
 {
 }
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 /**
  * time_init_hook - do any specific initialisations for the system timer.
Index: mm1-2.6.7-rc3/arch/ia64/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/ia64/kernel/irq.c	2004-06-09 07:10:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ia64/kernel/irq.c	2004-06-09 10:40:13.355005000 -0700
@@ -612,7 +612,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/ia64/lib/kgdb_serial.c
=================================--- mm1-2.6.7-rc3.orig/arch/ia64/lib/kgdb_serial.c	2004-06-09 07:10:25.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ia64/lib/kgdb_serial.c	2004-06-09 10:40:13.429993000 -0700
@@ -486,7 +486,7 @@
 		irq_desc_t *desc;
 		kgdb_action.handler = gdb_interrupt;
 		kgdb_action.flags = IRQ_T(gdb_async_info);
-		kgdb_action.mask = 0;
+		kgdb_action.mask = CPU_MASK_NONE;
 		kgdb_action.name = "KGDB-stub";
 		kgdb_action.next = NULL;
 		kgdb_action.dev_id = NULL;
Index: mm1-2.6.7-rc3/arch/mips/baget/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/baget/irq.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/baget/irq.c	2004-06-09 10:40:13.512981000 -0700
@@ -325,7 +325,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
@@ -389,7 +389,7 @@
 }
 
 static struct irqaction irq0  -{ write_err_interrupt, SA_INTERRUPT, 0, "bus write error", NULL, NULL};
+{ write_err_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "bus write error", NULL, NULL};
 
 void __init init_IRQ(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/baget/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/baget/time.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/baget/time.c	2004-06-09 10:40:13.545976000 -0700
@@ -67,7 +67,7 @@
 }
 
 static struct irqaction timer_irq  -{ timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+{ timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 void __init time_init(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/kernel/irq.c	2004-06-07 12:13:39.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/kernel/irq.c	2004-06-09 10:40:13.578971000 -0700
@@ -487,7 +487,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/mips/vr4181/common/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/vr4181/common/irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr4181/common/irq.c	2004-06-09 10:40:13.634962000 -0700
@@ -180,9 +180,9 @@
 extern void mips_cpu_irq_init(u32 irq_base);
 
 static struct irqaction cascade -	{ no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL };
+	{ no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade", NULL, NULL };
 static struct irqaction reserved -	{ no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL };
+	{ no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 void __init init_IRQ(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/gt64120/common/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/gt64120/common/time.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/gt64120/common/time.c	2004-06-09 10:40:13.676956000 -0700
@@ -80,7 +80,7 @@
 	timer.name = "timer";
 	timer.dev_id = NULL;
 	timer.next = NULL;
-	timer.mask = 0;
+	timer.mask = CPU_MASK_NONE;
 	irq_desc[GT_TIMER].action = &timer;
 
 	enable_irq(GT_TIMER);
Index: mm1-2.6.7-rc3/arch/mips/vr41xx/common/giu.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/vr41xx/common/giu.c	2004-06-07 12:13:38.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr41xx/common/giu.c	2004-06-09 10:40:13.722949000 -0700
@@ -209,7 +209,7 @@
 };
 
 static struct vr41xx_giuint_cascade giuint_cascade[GIUINT_NR_IRQS];
-static struct irqaction giu_cascade = {no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction giu_cascade = {no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 static int no_irq_number(int irq)
 {
Index: mm1-2.6.7-rc3/arch/mips/vr41xx/common/icu.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/vr41xx/common/icu.c	2004-06-07 12:13:35.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr41xx/common/icu.c	2004-06-09 10:40:13.738946000 -0700
@@ -288,7 +288,7 @@
 
 /*====================================*/
 
-static struct irqaction icu_cascade = {no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction icu_cascade = {no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 static void __init vr41xx_icu_init(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/momentum/jaguar_atx/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/momentum/jaguar_atx/irq.c	2004-06-07 12:14:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/momentum/jaguar_atx/irq.c	2004-06-09 10:40:13.781940000 -0700
@@ -42,7 +42,7 @@
 extern asmlinkage void jaguar_handle_int(void);
 
 static struct irqaction cascade_mv64340 = {
-	no_action, SA_INTERRUPT, 0, "MV64340-Cascade", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "MV64340-Cascade", NULL, NULL
 };
 
 void __init init_IRQ(void)
Index: mm1-2.6.7-rc3/arch/mips/momentum/ocelot_c/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/momentum/ocelot_c/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/momentum/ocelot_c/irq.c	2004-06-09 10:40:13.806936000 -0700
@@ -53,11 +53,11 @@
 extern void cpci_irq_init(void);
 
 static struct irqaction cascade_fpga = {
-	no_action, SA_INTERRUPT, 0, "cascade via FPGA", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade via FPGA", NULL, NULL
 };
 
 static struct irqaction cascade_mv64340 = {
-	no_action, SA_INTERRUPT, 0, "cascade via MV64340", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL
 };
 
 void __init init_IRQ(void)
Index: mm1-2.6.7-rc3/arch/mips/jmr3927/rbhma3100/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/jmr3927/rbhma3100/irq.c	2004-06-07 12:14:10.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/jmr3927/rbhma3100/irq.c	2004-06-09 10:40:13.850929000 -0700
@@ -301,7 +301,7 @@
 }
 
 static struct irqaction ioc_action = {
-	jmr3927_ioc_interrupt, 0, 0, "IOC", NULL, NULL,
+	jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL,
 };
 
 static void jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -318,7 +318,7 @@
 }
 
 static struct irqaction isac_action = {
-	jmr3927_isac_interrupt, 0, 0, "ISAC", NULL, NULL,
+	jmr3927_isac_interrupt, 0, CPU_MASK_NONE, "ISAC", NULL, NULL,
 };
 
 
@@ -327,7 +327,7 @@
 	printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq);
 }
 static struct irqaction isaerr_action = {
-	jmr3927_isaerr_interrupt, 0, 0, "ISA error", NULL, NULL,
+	jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL,
 };
 
 static void jmr3927_pcierr_interrupt(int irq, void * dev_id, struct pt_regs * regs)
@@ -337,7 +337,7 @@
 	       tx3927_pcicptr->pcistat, tx3927_pcicptr->lbstat);
 }
 static struct irqaction pcierr_action = {
-	jmr3927_pcierr_interrupt, 0, 0, "PCI error", NULL, NULL,
+	jmr3927_pcierr_interrupt, 0, CPU_MASK_NONE, "PCI error", NULL, NULL,
 };
 
 int jmr3927_ether1_irq = 0;
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5074/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5074/irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5074/irq.c	2004-06-09 10:40:13.880925000 -0700
@@ -24,7 +24,7 @@
 
 extern asmlinkage void ddbIRQ(void);
 
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 #define M1543_PNP_CONFIG	0x03f0	/* PnP Config Port */
 #define M1543_PNP_INDEX		0x03f0	/* PnP Index Port */
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5477/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5477/irq.c	2004-06-07 12:13:39.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5477/irq.c	2004-06-09 10:40:13.901922000 -0700
@@ -77,7 +77,7 @@
 extern void mips_cpu_irq_init(u32 base);
 extern asmlinkage void ddb5477_handle_int(void);
 extern int setup_irq(unsigned int irq, struct irqaction *irqaction);  
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 void
 ddb5477_irq_setup(void)
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5476/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5476/irq.c	2004-06-07 12:14:57.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5476/irq.c	2004-06-09 10:40:13.924918000 -0700
@@ -107,8 +107,8 @@
 	/* memory resource acquire in ddb_setup */
 }
 
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
-static struct irqaction irq_error = { no_action, 0, 0, "error", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
+static struct irqaction irq_error = { no_action, 0, CPU_MASK_NONE, "error", NULL, NULL };
 
 extern asmlinkage void ddb5476_handle_int(void);
 extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
Index: mm1-2.6.7-rc3/arch/mips/sibyte/sb1250/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/sibyte/sb1250/irq.c	2004-06-07 12:14:59.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/sibyte/sb1250/irq.c	2004-06-09 10:40:13.969911000 -0700
@@ -279,7 +279,7 @@
 static struct irqaction sb1250_dummy_action = {
 	.handler = sb1250_dummy_handler,
 	.flags   = 0,
-	.mask    = 0,
+	.mask    = CPU_MASK_NONE,
 	.name    = "sb1250-private",
 	.next    = NULL,
 	.dev_id  = 0
Index: mm1-2.6.7-rc3/arch/mips/tx4927/common/tx4927_irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/tx4927/common/tx4927_irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/tx4927/common/tx4927_irq.c	2004-06-09 10:40:14.010905000 -0700
@@ -172,7 +172,7 @@
 	.set_affinity	= NULL
 };
 
-#define TX4927_PIC_ACTION(s) { no_action, 0, 0, s, NULL, NULL }
+#define TX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
 static struct irqaction tx4927_irq_pic_action  TX4927_PIC_ACTION(TX4927_PIC_NAME);
 
Index: mm1-2.6.7-rc3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c	2004-06-07 12:14:04.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c	2004-06-09 10:40:14.037901000 -0700
@@ -337,8 +337,8 @@
 	return (sw_irq);
 }
 
-//#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, 0, 0, s, NULL, NULL }
-#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, SA_SHIRQ, 0, s, NULL, NULL }
+//#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
+#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, SA_SHIRQ, CPU_MASK_NONE, s, NULL, NULL }
 static struct irqaction toshiba_rbtx4927_irq_ioc_action  TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_IOC_NAME);
 #ifdef CONFIG_TOSHIBA_FPCIB0
Index: mm1-2.6.7-rc3/arch/mips/sgi-ip32/ip32-irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/mips/sgi-ip32/ip32-irq.c	2004-06-07 12:14:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/sgi-ip32/ip32-irq.c	2004-06-09 10:40:14.082894000 -0700
@@ -123,9 +123,9 @@
 				      struct pt_regs *regs);
 
 struct irqaction memerr_irq = { crime_memerr_intr, SA_INTERRUPT,
-				0, "CRIME memory error", NULL, NULL };
+			CPU_MASK_NONE, "CRIME memory error", NULL, NULL };
 struct irqaction cpuerr_irq = { crime_cpuerr_intr, SA_INTERRUPT,
-				0, "CRIME CPU error", NULL, NULL };
+			CPU_MASK_NONE, "CRIME CPU error", NULL, NULL };
 
 extern void ip32_handle_int(void);
 
Index: mm1-2.6.7-rc3/arch/parisc/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/parisc/kernel/irq.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/parisc/kernel/irq.c	2004-06-09 10:40:14.151884000 -0700
@@ -644,7 +644,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/ppc64/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/ppc64/kernel/irq.c	2004-06-09 07:11:49.715847000 -0700
+++ mm1-2.6.7-rc3/arch/ppc64/kernel/irq.c	2004-06-09 10:40:14.181879000 -0700
@@ -206,7 +206,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = dev_id;
 	action->next = NULL;
Index: mm1-2.6.7-rc3/arch/sh/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/sh/kernel/irq.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/kernel/irq.c	2004-06-09 10:40:14.243870000 -0700
@@ -436,7 +436,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sh/kernel/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/sh/kernel/time.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/kernel/time.c	2004-06-09 10:40:14.278864000 -0700
@@ -391,7 +391,7 @@
 }
 __setup("sh_pclk=", sh_pclk_setup);
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 void get_current_frequency_divisors(unsigned int *ifc, unsigned int *bfc, unsigned int *pfc)
 {
Index: mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64465/setup.c
=================================--- mm1-2.6.7-rc3.orig/arch/sh/cchips/hd6446x/hd64465/setup.c	2004-06-07 12:15:12.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64465/setup.c	2004-06-09 10:40:14.334856000 -0700
@@ -154,7 +154,7 @@
 	return irq;
 }
 
-static struct irqaction irq0  = { hd64465_interrupt, SA_INTERRUPT, 0, "HD64465", NULL, NULL};
+static struct irqaction irq0  = { hd64465_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "HD64465", NULL, NULL};
 
 
 static int __init setup_hd64465(void)
Index: mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64461/setup.c
=================================--- mm1-2.6.7-rc3.orig/arch/sh/cchips/hd6446x/hd64461/setup.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64461/setup.c	2004-06-09 10:40:14.355853000 -0700
@@ -134,7 +134,7 @@
 	return __irq_demux(irq);
 }
 
-static struct irqaction irq0 = { hd64461_interrupt, SA_INTERRUPT, 0, "HD64461", NULL, NULL };
+static struct irqaction irq0 = { hd64461_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "HD64461", NULL, NULL };
 
 int __init setup_hd64461(void)
 {
Index: mm1-2.6.7-rc3/arch/sparc/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/sparc/kernel/irq.c	2004-06-07 12:13:36.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sparc/kernel/irq.c	2004-06-09 10:40:14.433841000 -0700
@@ -449,7 +449,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = NULL;
 	action->next = NULL;
@@ -529,7 +529,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sparc/kernel/sun4d_irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/sparc/kernel/sun4d_irq.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sparc/kernel/sun4d_irq.c	2004-06-09 10:40:14.477834000 -0700
@@ -336,7 +336,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sparc64/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/sparc64/kernel/irq.c	2004-06-09 07:11:45.739451000 -0700
+++ mm1-2.6.7-rc3/arch/sparc64/kernel/irq.c	2004-06-09 10:55:57.626454000 -0700
@@ -118,10 +118,6 @@
 		action->flags |= __irq_ino(irq) << 48;
 #define get_ino_in_irqaction(action)	(action->flags >> 48)
 
-#if NR_CPUS > 64
-#error irqaction embedded smp affinity does not work with > 64 cpus, FIXME
-#endif
-
 #define put_smpaff_in_irqaction(action, smpaff)	(action)->mask = (smpaff)
 #define get_smpaff_in_irqaction(action) 	((action)->mask)
 
@@ -454,7 +450,7 @@
 	action->next = NULL;
 	action->dev_id = dev_id;
 	put_ino_in_irqaction(action, irq);
-	put_smpaff_in_irqaction(action, 0);
+	put_smpaff_in_irqaction(action, CPU_MASK_NONE);
 
 	if (tmp)
 		tmp->next = action;
@@ -690,7 +686,7 @@
 	cpumask_t cpu_mask;
 	unsigned int buddy, ticks;
 
-	cpus_addr(cpu_mask)[0] = get_smpaff_in_irqaction(ap);
+	cpu_mask = get_smpaff_in_irqaction(ap);
 	cpus_and(cpu_mask, cpu_mask, cpu_online_map);
 	if (cpus_empty(cpu_mask))
 		cpu_mask = cpu_online_map;
@@ -711,7 +707,7 @@
 		if (++buddy >= NR_CPUS)
 			buddy = 0;
 		if (++ticks > NR_CPUS) {
-			put_smpaff_in_irqaction(ap, 0);
+			put_smpaff_in_irqaction(ap, CPU_MASK_NONE);
 			goto out;
 		}
 	}
@@ -945,7 +941,7 @@
 	action->name = name;
 	action->next = NULL;
 	put_ino_in_irqaction(action, irq);
-	put_smpaff_in_irqaction(action, 0);
+	put_smpaff_in_irqaction(action, CPU_MASK_NONE);
 
 	*(bucket->pil + irq_action) = action;
 	enable_irq(irq);
@@ -1163,45 +1159,6 @@
 
 #ifdef CONFIG_SMP
 
-#define HEX_DIGITS 16
-
-static unsigned int parse_hex_value (const char __user *buffer,
-		unsigned long count, unsigned long *ret)
-{
-	unsigned char hexnum [HEX_DIGITS];
-	unsigned long value;
-	int i;
-
-	if (!count)
-		return -EINVAL;
-	if (count > HEX_DIGITS)
-		count = HEX_DIGITS;
-	if (copy_from_user(hexnum, buffer, count))
-		return -EFAULT;
-
-	/*
-	 * Parse the first 8 characters as a hex string, any non-hex char
-	 * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same.
-	 */
-	value = 0;
-
-	for (i = 0; i < count; i++) {
-		unsigned int c = hexnum[i];
-
-		switch (c) {
-			case '0' ... '9': c -= '0'; break;
-			case 'a' ... 'f': c -= 'a'-10; break;
-			case 'A' ... 'F': c -= 'A'-10; break;
-		default:
-			goto out;
-		}
-		value = (value << 4) | c;
-	}
-out:
-	*ret = value;
-	return 0;
-}
-
 static int irq_affinity_read_proc (char *page, char **start, off_t off,
 			int count, int *eof, void *data)
 {
@@ -1210,7 +1167,7 @@
 	cpumask_t mask;
 	int len;
 
-	cpus_addr(mask)[0] = get_smpaff_in_irqaction(ap);
+	mask = get_smpaff_in_irqaction(ap);
 	if (cpus_empty(mask))
 		mask = cpu_online_map;
 
@@ -1221,7 +1178,7 @@
 	return len;
 }
 
-static inline void set_intr_affinity(int irq, unsigned long hw_aff)
+static inline void set_intr_affinity(int irq, cpumask_t hw_aff)
 {
 	struct ino_bucket *bp = ivector_table + irq;
 
@@ -1239,22 +1196,17 @@
 					unsigned long count, void *data)
 {
 	int irq = (long) data, full_count = count, err;
-	unsigned long new_value, i;
+	cpumask_t new_value;
 
-	err = parse_hex_value(buffer, count, &new_value);
+	err = cpumask_parse(buffer, count, new_value);
 
 	/*
 	 * Do not allow disabling IRQs completely - it's a too easy
 	 * way to make the system unusable accidentally :-) At least
 	 * one online CPU still has to be targeted.
 	 */
-	for (i = 0; i < NR_CPUS; i++) {
-		if ((new_value & (1UL << i)) != 0 &&
-		    !cpu_online(i))
-			new_value &= ~(1UL << i);
-	}
-
-	if (!new_value)
+	cpus_and(new_value, new_value, cpu_online_map);
+	if (cpus_empty(new_value))
 		return -EINVAL;
 
 	set_intr_affinity(irq, new_value);
Index: mm1-2.6.7-rc3/arch/sparc64/kernel/smp.c
=================================--- mm1-2.6.7-rc3.orig/arch/sparc64/kernel/smp.c	2004-06-09 07:11:49.087942000 -0700
+++ mm1-2.6.7-rc3/arch/sparc64/kernel/smp.c	2004-06-09 10:40:14.539825000 -0700
@@ -414,9 +414,6 @@
  * packet, but we have no use for that.  However we do take advantage of
  * the new pipelining feature (ie. dispatch to multiple cpus simultaneously).
  */
-#if NR_CPUS > 32
-#error Fixup cheetah_xcall_deliver Dave...
-#endif
 static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask)
 {
 	u64 pstate, ver;
Index: mm1-2.6.7-rc3/arch/um/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/um/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/um/kernel/irq.c	2004-06-09 10:40:14.575819000 -0700
@@ -419,7 +419,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/v850/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/v850/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/irq.c	2004-06-09 10:40:14.611814000 -0700
@@ -392,7 +392,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/v850/kernel/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/v850/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/time.c	2004-06-09 10:40:14.628811000 -0700
@@ -203,7 +203,7 @@
 static struct irqaction timer_irqaction = {
 	timer_interrupt,
 	SA_INTERRUPT,
-	0,
+	CPU_MASK_NONE,
 	"timer",
 	&timer_dev_id,
 	NULL
Index: mm1-2.6.7-rc3/arch/v850/kernel/fpga85e2c.c
=================================--- mm1-2.6.7-rc3.orig/arch/v850/kernel/fpga85e2c.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/fpga85e2c.c	2004-06-09 10:40:14.642809000 -0700
@@ -168,5 +168,5 @@
 
 static int reg_snap_dev_id;
 static struct irqaction reg_snap_action = {
-	make_reg_snap, 0, 0, "reg_snap", &reg_snap_dev_id, 0
+	make_reg_snap, 0, CPU_MASK_NONE, "reg_snap", &reg_snap_dev_id, 0
 };
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/irq.c
=================================--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/irq.c	2004-06-09 07:10:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/irq.c	2004-06-09 10:40:14.688802000 -0700
@@ -491,7 +491,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/i8259.c
=================================--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/i8259.c	2004-06-09 07:11:50.439737000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/i8259.c	2004-06-09 10:40:14.701800000 -0700
@@ -390,7 +390,7 @@
  * IRQ2 is cascade interrupt to second interrupt controller
  */
 
-static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq2 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 void __init init_ISA_irqs (void)
 {
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/time.c
=================================--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/time.c	2004-06-09 10:40:14.736795000 -0700
@@ -689,7 +689,7 @@
 }
 
 static struct irqaction irq0 = {
-	timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL
+	timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL
 };
 
 extern void __init config_acpi_tables(void);

WARNING: multiple messages have this Message-ID (diff)
From: William Lee Irwin III <wli@holomorphy.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, sparclinux@vger.kernel.org
Subject: Re: 2.6.7-rc3-mm1
Date: Wed, 9 Jun 2004 10:59:10 -0700	[thread overview]
Message-ID: <20040609175910.GS1444@holomorphy.com> (raw)
In-Reply-To: <20040609015001.31d249ca.akpm@osdl.org>

On Wed, Jun 09, 2004 at 01:50:01AM -0700, Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7-rc3/2.6.7-rc3-mm1/
> - Included the dreaded cpumask rework.
> - Lots of little fixes.
> - Added support for the NX (no execute) pagetable flag on ia32.

Last time I tested this on sparc64 (the only current user of ->mask) it
appeared to work. The following patch makes irqaction's ->mask a cpumask
as it was intended to be and wraps up the rest of the sweep. Only struct
irqaction is usefully greppable, so there may be some assignments to
->mask missing still. This removes more code than it adds.

Compiletested i386 and sparc64, runtime tested on sparc64 in a prior
incarnation. vs. 2.6.7-rc3-mm1


-- wli

Index: mm1-2.6.7-rc3/include/linux/interrupt.h
===================================================================
--- mm1-2.6.7-rc3.orig/include/linux/interrupt.h	2004-06-07 12:14:25.000000000 -0700
+++ mm1-2.6.7-rc3/include/linux/interrupt.h	2004-06-09 10:40:12.684107000 -0700
@@ -7,6 +7,7 @@
 #include <linux/linkage.h>
 #include <linux/bitops.h>
 #include <linux/preempt.h>
+#include <linux/cpumask.h>
 #include <asm/atomic.h>
 #include <asm/hardirq.h>
 #include <asm/ptrace.h>
@@ -35,7 +36,7 @@
 struct irqaction {
 	irqreturn_t (*handler)(int, void *, struct pt_regs *);
 	unsigned long flags;
-	unsigned long mask;
+	cpumask_t mask;
 	const char *name;
 	void *dev_id;
 	struct irqaction *next;
Index: mm1-2.6.7-rc3/include/linux/cpumask.h
===================================================================
--- mm1-2.6.7-rc3.orig/include/linux/cpumask.h	2004-06-09 07:11:49.439889000 -0700
+++ mm1-2.6.7-rc3/include/linux/cpumask.h	2004-06-09 10:44:34.137360000 -0700
@@ -248,9 +248,9 @@
 #endif
 
 #define CPU_MASK_NONE							\
-{ {									\
+((cpumask_t){ {								\
 	[0 ... BITS_TO_LONGS(NR_CPUS)-1] =  0UL				\
-} }
+} })
 
 #define cpus_addr(src) ((src).bits)
 
Index: mm1-2.6.7-rc3/arch/ppc/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/ppc/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ppc/kernel/irq.c	2004-06-09 10:40:12.760095000 -0700
@@ -241,7 +241,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;			
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = dev_id;
 	action->next = NULL;
Index: mm1-2.6.7-rc3/arch/alpha/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/alpha/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/alpha/kernel/irq.c	2004-06-09 10:40:12.844083000 -0700
@@ -457,7 +457,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/arm/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/arm/kernel/irq.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm/kernel/irq.c	2004-06-09 10:40:12.895075000 -0700
@@ -674,7 +674,7 @@
 
 	action->handler = handler;
 	action->flags = irq_flags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/arm/mach-clps7500/core.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/arm/mach-clps7500/core.c	2004-06-07 12:14:33.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm/mach-clps7500/core.c	2004-06-09 10:40:12.944067000 -0700
@@ -187,7 +187,7 @@
 	.unmask	= cl7500_no_action,
 };
 
-static struct irqaction irq_isa = { no_action, 0, 0, "isa", NULL, NULL };
+static struct irqaction irq_isa = { no_action, 0, CPU_MASK_NONE, "isa", NULL, NULL };
 
 static void __init clps7500_init_irq(void)
 {
Index: mm1-2.6.7-rc3/arch/arm26/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/arm26/kernel/irq.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/arm26/kernel/irq.c	2004-06-09 10:40:13.024055000 -0700
@@ -549,7 +549,7 @@
 
 	action->handler = handler;
 	action->flags = irq_flags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/cris/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/cris/kernel/irq.c	2004-06-07 12:15:12.000000000 -0700
+++ mm1-2.6.7-rc3/arch/cris/kernel/irq.c	2004-06-09 10:40:13.065049000 -0700
@@ -240,7 +240,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/cris/arch-v10/kernel/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/cris/arch-v10/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/cris/arch-v10/kernel/time.c	2004-06-09 10:40:13.155035000 -0700
@@ -253,7 +253,7 @@
  */
 
 static struct irqaction irq2  = { timer_interrupt, SA_SHIRQ | SA_INTERRUPT,
-				  0, "timer", NULL, NULL};
+				  CPU_MASK_NONE, "timer", NULL, NULL};
 
 void __init
 time_init(void)
Index: mm1-2.6.7-rc3/arch/i386/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/kernel/irq.c	2004-06-09 07:10:49.966930000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/irq.c	2004-06-09 10:40:13.221025000 -0700
@@ -654,7 +654,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/i386/kernel/i8259.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/kernel/i8259.c	2004-06-09 07:11:34.007235000 -0700
+++ mm1-2.6.7-rc3/arch/i386/kernel/i8259.c	2004-06-09 10:40:13.230024000 -0700
@@ -333,7 +333,7 @@
  * New motherboards sometimes make IRQ 13 be a PCI interrupt,
  * so allow interrupt sharing.
  */
-static struct irqaction fpu_irq = { math_error_irq, 0, 0, "fpu", NULL, NULL };
+static struct irqaction fpu_irq = { math_error_irq, 0, CPU_MASK_NONE, "fpu", NULL, NULL };
 
 void __init init_ISA_irqs (void)
 {
Index: mm1-2.6.7-rc3/arch/i386/mach-default/setup.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/mach-default/setup.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/i386/mach-default/setup.c	2004-06-09 10:40:13.267018000 -0700
@@ -27,7 +27,7 @@
 /*
  * IRQ2 is cascade interrupt to second interrupt controller
  */
-static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq2 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 /**
  * intr_init_hook - post gate setup interrupt initialisation
@@ -71,7 +71,7 @@
 {
 }
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 /**
  * time_init_hook - do any specific initialisations for the system timer.
Index: mm1-2.6.7-rc3/arch/i386/mach-pc9800/setup.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/i386/mach-pc9800/setup.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/i386/mach-pc9800/setup.c	2004-06-09 10:40:13.287015000 -0700
@@ -34,7 +34,7 @@
 /*
  * IRQ7 is cascade interrupt to second interrupt controller
  */
-static struct irqaction irq7 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq7 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 /**
  * intr_init_hook - post gate setup interrupt initialisation
@@ -82,7 +82,7 @@
 {
 }
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 /**
  * time_init_hook - do any specific initialisations for the system timer.
Index: mm1-2.6.7-rc3/arch/ia64/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/ia64/kernel/irq.c	2004-06-09 07:10:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ia64/kernel/irq.c	2004-06-09 10:40:13.355005000 -0700
@@ -612,7 +612,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/ia64/lib/kgdb_serial.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/ia64/lib/kgdb_serial.c	2004-06-09 07:10:25.000000000 -0700
+++ mm1-2.6.7-rc3/arch/ia64/lib/kgdb_serial.c	2004-06-09 10:40:13.429993000 -0700
@@ -486,7 +486,7 @@
 		irq_desc_t *desc;
 		kgdb_action.handler = gdb_interrupt;
 		kgdb_action.flags = IRQ_T(gdb_async_info);
-		kgdb_action.mask = 0;
+		kgdb_action.mask = CPU_MASK_NONE;
 		kgdb_action.name = "KGDB-stub";
 		kgdb_action.next = NULL;
 		kgdb_action.dev_id = NULL;
Index: mm1-2.6.7-rc3/arch/mips/baget/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/baget/irq.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/baget/irq.c	2004-06-09 10:40:13.512981000 -0700
@@ -325,7 +325,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
@@ -389,7 +389,7 @@
 }
 
 static struct irqaction irq0  =
-{ write_err_interrupt, SA_INTERRUPT, 0, "bus write error", NULL, NULL};
+{ write_err_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "bus write error", NULL, NULL};
 
 void __init init_IRQ(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/baget/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/baget/time.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/baget/time.c	2004-06-09 10:40:13.545976000 -0700
@@ -67,7 +67,7 @@
 }
 
 static struct irqaction timer_irq  =
-{ timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+{ timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 void __init time_init(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/kernel/irq.c	2004-06-07 12:13:39.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/kernel/irq.c	2004-06-09 10:40:13.578971000 -0700
@@ -487,7 +487,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/mips/vr4181/common/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/vr4181/common/irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr4181/common/irq.c	2004-06-09 10:40:13.634962000 -0700
@@ -180,9 +180,9 @@
 extern void mips_cpu_irq_init(u32 irq_base);
 
 static struct irqaction cascade =
-	{ no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL };
+	{ no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade", NULL, NULL };
 static struct irqaction reserved =
-	{ no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL };
+	{ no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 void __init init_IRQ(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/gt64120/common/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/gt64120/common/time.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/gt64120/common/time.c	2004-06-09 10:40:13.676956000 -0700
@@ -80,7 +80,7 @@
 	timer.name = "timer";
 	timer.dev_id = NULL;
 	timer.next = NULL;
-	timer.mask = 0;
+	timer.mask = CPU_MASK_NONE;
 	irq_desc[GT_TIMER].action = &timer;
 
 	enable_irq(GT_TIMER);
Index: mm1-2.6.7-rc3/arch/mips/vr41xx/common/giu.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/vr41xx/common/giu.c	2004-06-07 12:13:38.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr41xx/common/giu.c	2004-06-09 10:40:13.722949000 -0700
@@ -209,7 +209,7 @@
 };
 
 static struct vr41xx_giuint_cascade giuint_cascade[GIUINT_NR_IRQS];
-static struct irqaction giu_cascade = {no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction giu_cascade = {no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 static int no_irq_number(int irq)
 {
Index: mm1-2.6.7-rc3/arch/mips/vr41xx/common/icu.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/vr41xx/common/icu.c	2004-06-07 12:13:35.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/vr41xx/common/icu.c	2004-06-09 10:40:13.738946000 -0700
@@ -288,7 +288,7 @@
 
 /*=======================================================================*/
 
-static struct irqaction icu_cascade = {no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction icu_cascade = {no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 static void __init vr41xx_icu_init(void)
 {
Index: mm1-2.6.7-rc3/arch/mips/momentum/jaguar_atx/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/momentum/jaguar_atx/irq.c	2004-06-07 12:14:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/momentum/jaguar_atx/irq.c	2004-06-09 10:40:13.781940000 -0700
@@ -42,7 +42,7 @@
 extern asmlinkage void jaguar_handle_int(void);
 
 static struct irqaction cascade_mv64340 = {
-	no_action, SA_INTERRUPT, 0, "MV64340-Cascade", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "MV64340-Cascade", NULL, NULL
 };
 
 void __init init_IRQ(void)
Index: mm1-2.6.7-rc3/arch/mips/momentum/ocelot_c/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/momentum/ocelot_c/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/momentum/ocelot_c/irq.c	2004-06-09 10:40:13.806936000 -0700
@@ -53,11 +53,11 @@
 extern void cpci_irq_init(void);
 
 static struct irqaction cascade_fpga = {
-	no_action, SA_INTERRUPT, 0, "cascade via FPGA", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade via FPGA", NULL, NULL
 };
 
 static struct irqaction cascade_mv64340 = {
-	no_action, SA_INTERRUPT, 0, "cascade via MV64340", NULL, NULL
+	no_action, SA_INTERRUPT, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL
 };
 
 void __init init_IRQ(void)
Index: mm1-2.6.7-rc3/arch/mips/jmr3927/rbhma3100/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/jmr3927/rbhma3100/irq.c	2004-06-07 12:14:10.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/jmr3927/rbhma3100/irq.c	2004-06-09 10:40:13.850929000 -0700
@@ -301,7 +301,7 @@
 }
 
 static struct irqaction ioc_action = {
-	jmr3927_ioc_interrupt, 0, 0, "IOC", NULL, NULL,
+	jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL,
 };
 
 static void jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -318,7 +318,7 @@
 }
 
 static struct irqaction isac_action = {
-	jmr3927_isac_interrupt, 0, 0, "ISAC", NULL, NULL,
+	jmr3927_isac_interrupt, 0, CPU_MASK_NONE, "ISAC", NULL, NULL,
 };
 
 
@@ -327,7 +327,7 @@
 	printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq);
 }
 static struct irqaction isaerr_action = {
-	jmr3927_isaerr_interrupt, 0, 0, "ISA error", NULL, NULL,
+	jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL,
 };
 
 static void jmr3927_pcierr_interrupt(int irq, void * dev_id, struct pt_regs * regs)
@@ -337,7 +337,7 @@
 	       tx3927_pcicptr->pcistat, tx3927_pcicptr->lbstat);
 }
 static struct irqaction pcierr_action = {
-	jmr3927_pcierr_interrupt, 0, 0, "PCI error", NULL, NULL,
+	jmr3927_pcierr_interrupt, 0, CPU_MASK_NONE, "PCI error", NULL, NULL,
 };
 
 int jmr3927_ether1_irq = 0;
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5074/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5074/irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5074/irq.c	2004-06-09 10:40:13.880925000 -0700
@@ -24,7 +24,7 @@
 
 extern asmlinkage void ddbIRQ(void);
 
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 #define M1543_PNP_CONFIG	0x03f0	/* PnP Config Port */
 #define M1543_PNP_INDEX		0x03f0	/* PnP Index Port */
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5477/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5477/irq.c	2004-06-07 12:13:39.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5477/irq.c	2004-06-09 10:40:13.901922000 -0700
@@ -77,7 +77,7 @@
 extern void mips_cpu_irq_init(u32 base);
 extern asmlinkage void ddb5477_handle_int(void);
 extern int setup_irq(unsigned int irq, struct irqaction *irqaction);  
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
 
 void
 ddb5477_irq_setup(void)
Index: mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5476/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/ddb5xxx/ddb5476/irq.c	2004-06-07 12:14:57.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/ddb5xxx/ddb5476/irq.c	2004-06-09 10:40:13.924918000 -0700
@@ -107,8 +107,8 @@
 	/* memory resource acquire in ddb_setup */
 }
 
-static struct irqaction irq_cascade = { no_action, 0, 0, "cascade", NULL, NULL };
-static struct irqaction irq_error = { no_action, 0, 0, "error", NULL, NULL };
+static struct irqaction irq_cascade = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL };
+static struct irqaction irq_error = { no_action, 0, CPU_MASK_NONE, "error", NULL, NULL };
 
 extern asmlinkage void ddb5476_handle_int(void);
 extern int setup_irq(unsigned int irq, struct irqaction *irqaction);
Index: mm1-2.6.7-rc3/arch/mips/sibyte/sb1250/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/sibyte/sb1250/irq.c	2004-06-07 12:14:59.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/sibyte/sb1250/irq.c	2004-06-09 10:40:13.969911000 -0700
@@ -279,7 +279,7 @@
 static struct irqaction sb1250_dummy_action = {
 	.handler = sb1250_dummy_handler,
 	.flags   = 0,
-	.mask    = 0,
+	.mask    = CPU_MASK_NONE,
 	.name    = "sb1250-private",
 	.next    = NULL,
 	.dev_id  = 0
Index: mm1-2.6.7-rc3/arch/mips/tx4927/common/tx4927_irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/tx4927/common/tx4927_irq.c	2004-06-07 12:15:11.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/tx4927/common/tx4927_irq.c	2004-06-09 10:40:14.010905000 -0700
@@ -172,7 +172,7 @@
 	.set_affinity	= NULL
 };
 
-#define TX4927_PIC_ACTION(s) { no_action, 0, 0, s, NULL, NULL }
+#define TX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
 static struct irqaction tx4927_irq_pic_action =
 TX4927_PIC_ACTION(TX4927_PIC_NAME);
 
Index: mm1-2.6.7-rc3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c	2004-06-07 12:14:04.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c	2004-06-09 10:40:14.037901000 -0700
@@ -337,8 +337,8 @@
 	return (sw_irq);
 }
 
-//#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, 0, 0, s, NULL, NULL }
-#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, SA_SHIRQ, 0, s, NULL, NULL }
+//#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, 0, CPU_MASK_NONE, s, NULL, NULL }
+#define TOSHIBA_RBTX4927_PIC_ACTION(s) { no_action, SA_SHIRQ, CPU_MASK_NONE, s, NULL, NULL }
 static struct irqaction toshiba_rbtx4927_irq_ioc_action =
 TOSHIBA_RBTX4927_PIC_ACTION(TOSHIBA_RBTX4927_IOC_NAME);
 #ifdef CONFIG_TOSHIBA_FPCIB0
Index: mm1-2.6.7-rc3/arch/mips/sgi-ip32/ip32-irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/mips/sgi-ip32/ip32-irq.c	2004-06-07 12:14:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/mips/sgi-ip32/ip32-irq.c	2004-06-09 10:40:14.082894000 -0700
@@ -123,9 +123,9 @@
 				      struct pt_regs *regs);
 
 struct irqaction memerr_irq = { crime_memerr_intr, SA_INTERRUPT,
-				0, "CRIME memory error", NULL, NULL };
+			CPU_MASK_NONE, "CRIME memory error", NULL, NULL };
 struct irqaction cpuerr_irq = { crime_cpuerr_intr, SA_INTERRUPT,
-				0, "CRIME CPU error", NULL, NULL };
+			CPU_MASK_NONE, "CRIME CPU error", NULL, NULL };
 
 extern void ip32_handle_int(void);
 
Index: mm1-2.6.7-rc3/arch/parisc/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/parisc/kernel/irq.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/parisc/kernel/irq.c	2004-06-09 10:40:14.151884000 -0700
@@ -644,7 +644,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/ppc64/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/ppc64/kernel/irq.c	2004-06-09 07:11:49.715847000 -0700
+++ mm1-2.6.7-rc3/arch/ppc64/kernel/irq.c	2004-06-09 10:40:14.181879000 -0700
@@ -206,7 +206,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = dev_id;
 	action->next = NULL;
Index: mm1-2.6.7-rc3/arch/sh/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sh/kernel/irq.c	2004-06-07 12:14:05.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/kernel/irq.c	2004-06-09 10:40:14.243870000 -0700
@@ -436,7 +436,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sh/kernel/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sh/kernel/time.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/kernel/time.c	2004-06-09 10:40:14.278864000 -0700
@@ -391,7 +391,7 @@
 }
 __setup("sh_pclk=", sh_pclk_setup);
 
-static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL};
+static struct irqaction irq0  = { timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL};
 
 void get_current_frequency_divisors(unsigned int *ifc, unsigned int *bfc, unsigned int *pfc)
 {
Index: mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64465/setup.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sh/cchips/hd6446x/hd64465/setup.c	2004-06-07 12:15:12.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64465/setup.c	2004-06-09 10:40:14.334856000 -0700
@@ -154,7 +154,7 @@
 	return irq;
 }
 
-static struct irqaction irq0  = { hd64465_interrupt, SA_INTERRUPT, 0, "HD64465", NULL, NULL};
+static struct irqaction irq0  = { hd64465_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "HD64465", NULL, NULL};
 
 
 static int __init setup_hd64465(void)
Index: mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64461/setup.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sh/cchips/hd6446x/hd64461/setup.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sh/cchips/hd6446x/hd64461/setup.c	2004-06-09 10:40:14.355853000 -0700
@@ -134,7 +134,7 @@
 	return __irq_demux(irq);
 }
 
-static struct irqaction irq0 = { hd64461_interrupt, SA_INTERRUPT, 0, "HD64461", NULL, NULL };
+static struct irqaction irq0 = { hd64461_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "HD64461", NULL, NULL };
 
 int __init setup_hd64461(void)
 {
Index: mm1-2.6.7-rc3/arch/sparc/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sparc/kernel/irq.c	2004-06-07 12:13:36.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sparc/kernel/irq.c	2004-06-09 10:40:14.433841000 -0700
@@ -449,7 +449,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->dev_id = NULL;
 	action->next = NULL;
@@ -529,7 +529,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sparc/kernel/sun4d_irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sparc/kernel/sun4d_irq.c	2004-06-07 12:13:34.000000000 -0700
+++ mm1-2.6.7-rc3/arch/sparc/kernel/sun4d_irq.c	2004-06-09 10:40:14.477834000 -0700
@@ -336,7 +336,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/sparc64/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sparc64/kernel/irq.c	2004-06-09 07:11:45.739451000 -0700
+++ mm1-2.6.7-rc3/arch/sparc64/kernel/irq.c	2004-06-09 10:55:57.626454000 -0700
@@ -118,10 +118,6 @@
 		action->flags |= __irq_ino(irq) << 48;
 #define get_ino_in_irqaction(action)	(action->flags >> 48)
 
-#if NR_CPUS > 64
-#error irqaction embedded smp affinity does not work with > 64 cpus, FIXME
-#endif
-
 #define put_smpaff_in_irqaction(action, smpaff)	(action)->mask = (smpaff)
 #define get_smpaff_in_irqaction(action) 	((action)->mask)
 
@@ -454,7 +450,7 @@
 	action->next = NULL;
 	action->dev_id = dev_id;
 	put_ino_in_irqaction(action, irq);
-	put_smpaff_in_irqaction(action, 0);
+	put_smpaff_in_irqaction(action, CPU_MASK_NONE);
 
 	if (tmp)
 		tmp->next = action;
@@ -690,7 +686,7 @@
 	cpumask_t cpu_mask;
 	unsigned int buddy, ticks;
 
-	cpus_addr(cpu_mask)[0] = get_smpaff_in_irqaction(ap);
+	cpu_mask = get_smpaff_in_irqaction(ap);
 	cpus_and(cpu_mask, cpu_mask, cpu_online_map);
 	if (cpus_empty(cpu_mask))
 		cpu_mask = cpu_online_map;
@@ -711,7 +707,7 @@
 		if (++buddy >= NR_CPUS)
 			buddy = 0;
 		if (++ticks > NR_CPUS) {
-			put_smpaff_in_irqaction(ap, 0);
+			put_smpaff_in_irqaction(ap, CPU_MASK_NONE);
 			goto out;
 		}
 	}
@@ -945,7 +941,7 @@
 	action->name = name;
 	action->next = NULL;
 	put_ino_in_irqaction(action, irq);
-	put_smpaff_in_irqaction(action, 0);
+	put_smpaff_in_irqaction(action, CPU_MASK_NONE);
 
 	*(bucket->pil + irq_action) = action;
 	enable_irq(irq);
@@ -1163,45 +1159,6 @@
 
 #ifdef CONFIG_SMP
 
-#define HEX_DIGITS 16
-
-static unsigned int parse_hex_value (const char __user *buffer,
-		unsigned long count, unsigned long *ret)
-{
-	unsigned char hexnum [HEX_DIGITS];
-	unsigned long value;
-	int i;
-
-	if (!count)
-		return -EINVAL;
-	if (count > HEX_DIGITS)
-		count = HEX_DIGITS;
-	if (copy_from_user(hexnum, buffer, count))
-		return -EFAULT;
-
-	/*
-	 * Parse the first 8 characters as a hex string, any non-hex char
-	 * is end-of-string. '00e1', 'e1', '00E1', 'E1' are all the same.
-	 */
-	value = 0;
-
-	for (i = 0; i < count; i++) {
-		unsigned int c = hexnum[i];
-
-		switch (c) {
-			case '0' ... '9': c -= '0'; break;
-			case 'a' ... 'f': c -= 'a'-10; break;
-			case 'A' ... 'F': c -= 'A'-10; break;
-		default:
-			goto out;
-		}
-		value = (value << 4) | c;
-	}
-out:
-	*ret = value;
-	return 0;
-}
-
 static int irq_affinity_read_proc (char *page, char **start, off_t off,
 			int count, int *eof, void *data)
 {
@@ -1210,7 +1167,7 @@
 	cpumask_t mask;
 	int len;
 
-	cpus_addr(mask)[0] = get_smpaff_in_irqaction(ap);
+	mask = get_smpaff_in_irqaction(ap);
 	if (cpus_empty(mask))
 		mask = cpu_online_map;
 
@@ -1221,7 +1178,7 @@
 	return len;
 }
 
-static inline void set_intr_affinity(int irq, unsigned long hw_aff)
+static inline void set_intr_affinity(int irq, cpumask_t hw_aff)
 {
 	struct ino_bucket *bp = ivector_table + irq;
 
@@ -1239,22 +1196,17 @@
 					unsigned long count, void *data)
 {
 	int irq = (long) data, full_count = count, err;
-	unsigned long new_value, i;
+	cpumask_t new_value;
 
-	err = parse_hex_value(buffer, count, &new_value);
+	err = cpumask_parse(buffer, count, new_value);
 
 	/*
 	 * Do not allow disabling IRQs completely - it's a too easy
 	 * way to make the system unusable accidentally :-) At least
 	 * one online CPU still has to be targeted.
 	 */
-	for (i = 0; i < NR_CPUS; i++) {
-		if ((new_value & (1UL << i)) != 0 &&
-		    !cpu_online(i))
-			new_value &= ~(1UL << i);
-	}
-
-	if (!new_value)
+	cpus_and(new_value, new_value, cpu_online_map);
+	if (cpus_empty(new_value))
 		return -EINVAL;
 
 	set_intr_affinity(irq, new_value);
Index: mm1-2.6.7-rc3/arch/sparc64/kernel/smp.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/sparc64/kernel/smp.c	2004-06-09 07:11:49.087942000 -0700
+++ mm1-2.6.7-rc3/arch/sparc64/kernel/smp.c	2004-06-09 10:40:14.539825000 -0700
@@ -414,9 +414,6 @@
  * packet, but we have no use for that.  However we do take advantage of
  * the new pipelining feature (ie. dispatch to multiple cpus simultaneously).
  */
-#if NR_CPUS > 32
-#error Fixup cheetah_xcall_deliver Dave...
-#endif
 static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask)
 {
 	u64 pstate, ver;
Index: mm1-2.6.7-rc3/arch/um/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/um/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/um/kernel/irq.c	2004-06-09 10:40:14.575819000 -0700
@@ -419,7 +419,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/v850/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/v850/kernel/irq.c	2004-06-07 12:14:56.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/irq.c	2004-06-09 10:40:14.611814000 -0700
@@ -392,7 +392,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/v850/kernel/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/v850/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/time.c	2004-06-09 10:40:14.628811000 -0700
@@ -203,7 +203,7 @@
 static struct irqaction timer_irqaction = {
 	timer_interrupt,
 	SA_INTERRUPT,
-	0,
+	CPU_MASK_NONE,
 	"timer",
 	&timer_dev_id,
 	NULL
Index: mm1-2.6.7-rc3/arch/v850/kernel/fpga85e2c.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/v850/kernel/fpga85e2c.c	2004-06-07 12:14:58.000000000 -0700
+++ mm1-2.6.7-rc3/arch/v850/kernel/fpga85e2c.c	2004-06-09 10:40:14.642809000 -0700
@@ -168,5 +168,5 @@
 
 static int reg_snap_dev_id;
 static struct irqaction reg_snap_action = {
-	make_reg_snap, 0, 0, "reg_snap", &reg_snap_dev_id, 0
+	make_reg_snap, 0, CPU_MASK_NONE, "reg_snap", &reg_snap_dev_id, 0
 };
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/irq.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/irq.c	2004-06-09 07:10:24.000000000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/irq.c	2004-06-09 10:40:14.688802000 -0700
@@ -491,7 +491,7 @@
 
 	action->handler = handler;
 	action->flags = irqflags;
-	action->mask = 0;
+	cpus_clear(action->mask);
 	action->name = devname;
 	action->next = NULL;
 	action->dev_id = dev_id;
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/i8259.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/i8259.c	2004-06-09 07:11:50.439737000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/i8259.c	2004-06-09 10:40:14.701800000 -0700
@@ -390,7 +390,7 @@
  * IRQ2 is cascade interrupt to second interrupt controller
  */
 
-static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
+static struct irqaction irq2 = { no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL};
 
 void __init init_ISA_irqs (void)
 {
Index: mm1-2.6.7-rc3/arch/x86_64/kernel/time.c
===================================================================
--- mm1-2.6.7-rc3.orig/arch/x86_64/kernel/time.c	2004-06-07 12:14:42.000000000 -0700
+++ mm1-2.6.7-rc3/arch/x86_64/kernel/time.c	2004-06-09 10:40:14.736795000 -0700
@@ -689,7 +689,7 @@
 }
 
 static struct irqaction irq0 = {
-	timer_interrupt, SA_INTERRUPT, 0, "timer", NULL, NULL
+	timer_interrupt, SA_INTERRUPT, CPU_MASK_NONE, "timer", NULL, NULL
 };
 
 extern void __init config_acpi_tables(void);

  parent reply	other threads:[~2004-06-09 17:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-09  8:50 2.6.7-rc3-mm1 Andrew Morton
2004-06-09 11:25 ` 2.6.7-rc3-mm1 Eric BEGOT
2004-06-09 13:13   ` 2.6.7-rc3-mm1 Zwane Mwaikambo
2004-06-09 13:36     ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 13:42       ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 13:43       ` 2.6.7-rc3-mm1 Zwane Mwaikambo
2004-06-09 14:48         ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 14:58           ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 15:16             ` 2.6.7-rc3-mm1 William Lee Irwin III
     [not found]             ` <40C73198.4080700@yahoo.fr>
2004-06-09 15:50               ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 16:35 ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-09 17:05   ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 17:46     ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-10  3:38     ` 2.6.7-rc3-mm1 Norberto Bensa
2004-06-09 17:59 ` William Lee Irwin III [this message]
2004-06-09 17:59   ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 19:50   ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 19:50     ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 23:44 ` 2.6.7-rc3-mm1 (compile stats) John Cherry
2004-06-10  2:10 ` 2.6.7-rc3-mm1 Phil Brunner
2004-06-10  2:22   ` 2.6.7-rc3-mm1 Andrew Morton
2004-06-10  2:52   ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-10  8:59     ` 2.6.7-rc3-mm1 Phil Brunner
2004-06-10  5:16 ` 2.6.7-rc3-mm1 Clemens Schwaighofer
2004-06-10  5:31   ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-10  6:54     ` 2.6.7-rc3-mm1 Clemens Schwaighofer
2004-06-11  4:36 ` 2.6.7-rc3-mm1 Paul Jackson
2004-06-11  5:47   ` 2.6.7-rc3-mm1 Andrew Morton
2004-06-11  5:53     ` 2.6.7-rc3-mm1 Paul Jackson
  -- strict thread matches above, loose matches on Subject: below --
2004-06-09 15:33 2.6.7-rc3-mm1 Peter Maas
2004-06-09 15:52 ` 2.6.7-rc3-mm1 William Lee Irwin III
2004-06-09 20:03 2.6.7-rc3-mm1 Nguyen, Tom L
2004-06-10  0:51 2.6.7-rc3-mm1 Nguyen, Tom L
     [not found] <2576k-4hW-13@gated-at.bofh.it>
     [not found] ` <25LZK-88C-17@gated-at.bofh.it>
2004-06-11 10:48   ` 2.6.7-rc3-mm1 Andi Kleen
2004-06-11 11:32     ` 2.6.7-rc3-mm1 Paul Jackson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040609175910.GS1444@holomorphy.com \
    --to=wli@holomorphy.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sparclinux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.