diff options
-rw-r--r-- | arch/cris/Kconfig | 4 | ||||
-rw-r--r-- | arch/ia64/Kconfig | 4 | ||||
-rw-r--r-- | arch/mips/Kconfig | 5 | ||||
-rw-r--r-- | arch/parisc/Kconfig | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 4 | ||||
-rw-r--r-- | include/asm-cris/irq.h | 5 | ||||
-rw-r--r-- | include/asm-ia64/irq.h | 5 | ||||
-rw-r--r-- | include/asm-mips/mach-mips/irq.h | 6 | ||||
-rw-r--r-- | include/asm-parisc/irq.h | 5 | ||||
-rw-r--r-- | include/asm-powerpc/irq.h | 5 | ||||
-rw-r--r-- | include/linux/irq.h | 2 | ||||
-rw-r--r-- | kernel/irq/manage.c | 4 |
12 files changed, 24 insertions, 29 deletions
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 856b665020e7..6a1238a29d6c 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig | |||
@@ -28,6 +28,10 @@ config GENERIC_CALIBRATE_DELAY | |||
28 | bool | 28 | bool |
29 | default y | 29 | default y |
30 | 30 | ||
31 | config IRQ_PER_CPU | ||
32 | bool | ||
33 | default y | ||
34 | |||
31 | config CRIS | 35 | config CRIS |
32 | bool | 36 | bool |
33 | default y | 37 | default y |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 5faacbb8d16c..b487e227a1f7 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -492,6 +492,10 @@ config GENERIC_PENDING_IRQ | |||
492 | depends on GENERIC_HARDIRQS && SMP | 492 | depends on GENERIC_HARDIRQS && SMP |
493 | default y | 493 | default y |
494 | 494 | ||
495 | config IRQ_PER_CPU | ||
496 | bool | ||
497 | default y | ||
498 | |||
495 | source "arch/ia64/hp/sim/Kconfig" | 499 | source "arch/ia64/hp/sim/Kconfig" |
496 | 500 | ||
497 | menu "Instrumentation Support" | 501 | menu "Instrumentation Support" |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 35e038a974c6..08c2ece4ae40 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1618,6 +1618,11 @@ config GENERIC_IRQ_PROBE | |||
1618 | bool | 1618 | bool |
1619 | default y | 1619 | default y |
1620 | 1620 | ||
1621 | config IRQ_PER_CPU | ||
1622 | depends on SMP | ||
1623 | bool | ||
1624 | default y | ||
1625 | |||
1621 | # | 1626 | # |
1622 | # - Highmem only makes sense for the 32-bit kernel. | 1627 | # - Highmem only makes sense for the 32-bit kernel. |
1623 | # - The current highmem code will only work properly on physically indexed | 1628 | # - The current highmem code will only work properly on physically indexed |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 910fb3afc0b5..6dd0ea8f88e0 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -51,6 +51,10 @@ config GENERIC_HARDIRQS | |||
51 | config GENERIC_IRQ_PROBE | 51 | config GENERIC_IRQ_PROBE |
52 | def_bool y | 52 | def_bool y |
53 | 53 | ||
54 | config IRQ_PER_CPU | ||
55 | bool | ||
56 | default y | ||
57 | |||
54 | # unless you want to implement ACPI on PA-RISC ... ;-) | 58 | # unless you want to implement ACPI on PA-RISC ... ;-) |
55 | config PM | 59 | config PM |
56 | bool | 60 | bool |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index e2e9df344ab7..d43e4521abf2 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -30,6 +30,10 @@ config GENERIC_HARDIRQS | |||
30 | bool | 30 | bool |
31 | default y | 31 | default y |
32 | 32 | ||
33 | config IRQ_PER_CPU | ||
34 | bool | ||
35 | default y | ||
36 | |||
33 | config RWSEM_GENERIC_SPINLOCK | 37 | config RWSEM_GENERIC_SPINLOCK |
34 | bool | 38 | bool |
35 | 39 | ||
diff --git a/include/asm-cris/irq.h b/include/asm-cris/irq.h index 4b338792218b..998cce9f3200 100644 --- a/include/asm-cris/irq.h +++ b/include/asm-cris/irq.h | |||
@@ -1,11 +1,6 @@ | |||
1 | #ifndef _ASM_IRQ_H | 1 | #ifndef _ASM_IRQ_H |
2 | #define _ASM_IRQ_H | 2 | #define _ASM_IRQ_H |
3 | 3 | ||
4 | /* | ||
5 | * IRQ line status macro IRQ_PER_CPU is used | ||
6 | */ | ||
7 | #define ARCH_HAS_IRQ_PER_CPU | ||
8 | |||
9 | #include <asm/arch/irq.h> | 4 | #include <asm/arch/irq.h> |
10 | 5 | ||
11 | static inline int irq_canonicalize(int irq) | 6 | static inline int irq_canonicalize(int irq) |
diff --git a/include/asm-ia64/irq.h b/include/asm-ia64/irq.h index dbe86c0bbce5..79479e2c6966 100644 --- a/include/asm-ia64/irq.h +++ b/include/asm-ia64/irq.h | |||
@@ -14,11 +14,6 @@ | |||
14 | #define NR_IRQS 256 | 14 | #define NR_IRQS 256 |
15 | #define NR_IRQ_VECTORS NR_IRQS | 15 | #define NR_IRQ_VECTORS NR_IRQS |
16 | 16 | ||
17 | /* | ||
18 | * IRQ line status macro IRQ_PER_CPU is used | ||
19 | */ | ||
20 | #define ARCH_HAS_IRQ_PER_CPU | ||
21 | |||
22 | static __inline__ int | 17 | static __inline__ int |
23 | irq_canonicalize (int irq) | 18 | irq_canonicalize (int irq) |
24 | { | 19 | { |
diff --git a/include/asm-mips/mach-mips/irq.h b/include/asm-mips/mach-mips/irq.h index 083d9c512a04..e994b0c01227 100644 --- a/include/asm-mips/mach-mips/irq.h +++ b/include/asm-mips/mach-mips/irq.h | |||
@@ -4,10 +4,4 @@ | |||
4 | 4 | ||
5 | #define NR_IRQS 256 | 5 | #define NR_IRQS 256 |
6 | 6 | ||
7 | #ifdef CONFIG_SMP | ||
8 | |||
9 | #define ARCH_HAS_IRQ_PER_CPU | ||
10 | |||
11 | #endif | ||
12 | |||
13 | #endif /* __ASM_MACH_MIPS_IRQ_H */ | 7 | #endif /* __ASM_MACH_MIPS_IRQ_H */ |
diff --git a/include/asm-parisc/irq.h b/include/asm-parisc/irq.h index 377ba90c7d02..5cae260615a2 100644 --- a/include/asm-parisc/irq.h +++ b/include/asm-parisc/irq.h | |||
@@ -26,11 +26,6 @@ | |||
26 | 26 | ||
27 | #define NR_IRQS (CPU_IRQ_MAX + 1) | 27 | #define NR_IRQS (CPU_IRQ_MAX + 1) |
28 | 28 | ||
29 | /* | ||
30 | * IRQ line status macro IRQ_PER_CPU is used | ||
31 | */ | ||
32 | #define ARCH_HAS_IRQ_PER_CPU | ||
33 | |||
34 | static __inline__ int irq_canonicalize(int irq) | 29 | static __inline__ int irq_canonicalize(int irq) |
35 | { | 30 | { |
36 | return (irq == 2) ? 9 : irq; | 31 | return (irq == 2) ? 9 : irq; |
diff --git a/include/asm-powerpc/irq.h b/include/asm-powerpc/irq.h index a10feec29d4d..eb5f33e1977a 100644 --- a/include/asm-powerpc/irq.h +++ b/include/asm-powerpc/irq.h | |||
@@ -30,11 +30,6 @@ | |||
30 | #define IRQ_POLARITY_POSITIVE 0x2 /* high level or low->high edge */ | 30 | #define IRQ_POLARITY_POSITIVE 0x2 /* high level or low->high edge */ |
31 | #define IRQ_POLARITY_NEGATIVE 0x0 /* low level or high->low edge */ | 31 | #define IRQ_POLARITY_NEGATIVE 0x0 /* low level or high->low edge */ |
32 | 32 | ||
33 | /* | ||
34 | * IRQ line status macro IRQ_PER_CPU is used | ||
35 | */ | ||
36 | #define ARCH_HAS_IRQ_PER_CPU | ||
37 | |||
38 | #define get_irq_desc(irq) (&irq_desc[(irq)]) | 33 | #define get_irq_desc(irq) (&irq_desc[(irq)]) |
39 | 34 | ||
40 | /* Define a way to iterate across irqs. */ | 35 | /* Define a way to iterate across irqs. */ |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 81f3d976bb32..519a1cb7c331 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -33,7 +33,7 @@ | |||
33 | #define IRQ_WAITING 32 /* IRQ not yet seen - for autodetection */ | 33 | #define IRQ_WAITING 32 /* IRQ not yet seen - for autodetection */ |
34 | #define IRQ_LEVEL 64 /* IRQ level triggered */ | 34 | #define IRQ_LEVEL 64 /* IRQ level triggered */ |
35 | #define IRQ_MASKED 128 /* IRQ masked - shouldn't be seen again */ | 35 | #define IRQ_MASKED 128 /* IRQ masked - shouldn't be seen again */ |
36 | #ifdef ARCH_HAS_IRQ_PER_CPU | 36 | #ifdef CONFIG_IRQ_PER_CPU |
37 | # define IRQ_PER_CPU 256 /* IRQ is per CPU */ | 37 | # define IRQ_PER_CPU 256 /* IRQ is per CPU */ |
38 | # define CHECK_IRQ_PER_CPU(var) ((var) & IRQ_PER_CPU) | 38 | # define CHECK_IRQ_PER_CPU(var) ((var) & IRQ_PER_CPU) |
39 | #else | 39 | #else |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index ca9b5d36abe8..8389d1817fe8 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -198,7 +198,7 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
198 | if (!(old->flags & new->flags & SA_SHIRQ)) | 198 | if (!(old->flags & new->flags & SA_SHIRQ)) |
199 | goto mismatch; | 199 | goto mismatch; |
200 | 200 | ||
201 | #if defined(ARCH_HAS_IRQ_PER_CPU) && defined(SA_PERCPU_IRQ) | 201 | #if defined(CONFIG_IRQ_PER_CPU) && defined(SA_PERCPU_IRQ) |
202 | /* All handlers must agree on per-cpuness */ | 202 | /* All handlers must agree on per-cpuness */ |
203 | if ((old->flags & IRQ_PER_CPU) != (new->flags & IRQ_PER_CPU)) | 203 | if ((old->flags & IRQ_PER_CPU) != (new->flags & IRQ_PER_CPU)) |
204 | goto mismatch; | 204 | goto mismatch; |
@@ -213,7 +213,7 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
213 | } | 213 | } |
214 | 214 | ||
215 | *p = new; | 215 | *p = new; |
216 | #if defined(ARCH_HAS_IRQ_PER_CPU) && defined(SA_PERCPU_IRQ) | 216 | #if defined(CONFIG_IRQ_PER_CPU) && defined(SA_PERCPU_IRQ) |
217 | if (new->flags & SA_PERCPU_IRQ) | 217 | if (new->flags & SA_PERCPU_IRQ) |
218 | desc->status |= IRQ_PER_CPU; | 218 | desc->status |= IRQ_PER_CPU; |
219 | #endif | 219 | #endif |