diff options
| author | Ingo Molnar <mingo@elte.hu> | 2006-06-29 05:24:44 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-29 13:26:23 -0400 |
| commit | c0ad90a32fb60f4129d0e24dfd5fd7128e2e09f2 (patch) | |
| tree | 260d99ab74d33a37cbcc3557e2f18a5e96879f4d /include | |
| parent | 096c8131c573ed37939dc3f1440221c92c87e74b (diff) | |
[PATCH] genirq: add ->retrigger() irq op to consolidate hw_irq_resend()
Add ->retrigger() irq op to consolidate hw_irq_resend() implementations.
(Most architectures had it defined to NOP anyway.)
NOTE: ia64 needs testing. i386 and x86_64 tested.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-alpha/hw_irq.h | 2 | ||||
| -rw-r--r-- | include/asm-cris/hw_irq.h | 2 | ||||
| -rw-r--r-- | include/asm-i386/hw_irq.h | 10 | ||||
| -rw-r--r-- | include/asm-ia64/hw_irq.h | 3 | ||||
| -rw-r--r-- | include/asm-m32r/hw_irq.h | 5 | ||||
| -rw-r--r-- | include/asm-mips/hw_irq.h | 8 | ||||
| -rw-r--r-- | include/asm-parisc/hw_irq.h | 9 | ||||
| -rw-r--r-- | include/asm-powerpc/hw_irq.h | 6 | ||||
| -rw-r--r-- | include/asm-sh/hw_irq.h | 5 | ||||
| -rw-r--r-- | include/asm-sh64/hw_irq.h | 1 | ||||
| -rw-r--r-- | include/asm-um/hw_irq.h | 3 | ||||
| -rw-r--r-- | include/asm-v850/hw_irq.h | 4 | ||||
| -rw-r--r-- | include/asm-x86_64/hw_irq.h | 9 | ||||
| -rw-r--r-- | include/asm-xtensa/hw_irq.h | 4 | ||||
| -rw-r--r-- | include/linux/irq.h | 2 |
15 files changed, 10 insertions, 63 deletions
diff --git a/include/asm-alpha/hw_irq.h b/include/asm-alpha/hw_irq.h index ca9d43b635..a37db0f950 100644 --- a/include/asm-alpha/hw_irq.h +++ b/include/asm-alpha/hw_irq.h | |||
| @@ -2,8 +2,6 @@ | |||
| 2 | #define _ALPHA_HW_IRQ_H | 2 | #define _ALPHA_HW_IRQ_H |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
| 6 | |||
| 7 | extern volatile unsigned long irq_err_count; | 5 | extern volatile unsigned long irq_err_count; |
| 8 | 6 | ||
| 9 | #ifdef CONFIG_ALPHA_GENERIC | 7 | #ifdef CONFIG_ALPHA_GENERIC |
diff --git a/include/asm-cris/hw_irq.h b/include/asm-cris/hw_irq.h index 341536a234..298066020a 100644 --- a/include/asm-cris/hw_irq.h +++ b/include/asm-cris/hw_irq.h | |||
| @@ -1,7 +1,5 @@ | |||
| 1 | #ifndef _ASM_HW_IRQ_H | 1 | #ifndef _ASM_HW_IRQ_H |
| 2 | #define _ASM_HW_IRQ_H | 2 | #define _ASM_HW_IRQ_H |
| 3 | 3 | ||
| 4 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
| 5 | |||
| 6 | #endif | 4 | #endif |
| 7 | 5 | ||
diff --git a/include/asm-i386/hw_irq.h b/include/asm-i386/hw_irq.h index a4c0a5a9ff..87e5a351d8 100644 --- a/include/asm-i386/hw_irq.h +++ b/include/asm-i386/hw_irq.h | |||
| @@ -69,14 +69,4 @@ extern atomic_t irq_mis_count; | |||
| 69 | 69 | ||
| 70 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) | 70 | #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs)) |
| 71 | 71 | ||
| 72 | #if defined(CONFIG_X86_IO_APIC) | ||
| 73 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
| 74 | { | ||
| 75 | if (IO_APIC_IRQ(i)) | ||
| 76 | send_IPI_self(IO_APIC_VECTOR(i)); | ||
| 77 | } | ||
| 78 | #else | ||
| 79 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
| 80 | #endif | ||
| 81 | |||
| 82 | #endif /* _ASM_HW_IRQ_H */ | 72 | #endif /* _ASM_HW_IRQ_H */ |
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index ea8b8c407a..27f9df6b91 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
| @@ -97,8 +97,7 @@ extern int reserve_irq_vector (int vector); | |||
| 97 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); | 97 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); |
| 98 | extern void register_percpu_irq (ia64_vector vec, struct irqaction *action); | 98 | extern void register_percpu_irq (ia64_vector vec, struct irqaction *action); |
| 99 | 99 | ||
| 100 | static inline void | 100 | static inline void ia64_resend_irq(unsigned int vector) |
| 101 | hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector) | ||
| 102 | { | 101 | { |
| 103 | platform_send_ipi(smp_processor_id(), vector, IA64_IPI_DM_INT, 0); | 102 | platform_send_ipi(smp_processor_id(), vector, IA64_IPI_DM_INT, 0); |
| 104 | } | 103 | } |
diff --git a/include/asm-m32r/hw_irq.h b/include/asm-m32r/hw_irq.h index 8d7e9d0e09..7138537cda 100644 --- a/include/asm-m32r/hw_irq.h +++ b/include/asm-m32r/hw_irq.h | |||
| @@ -1,9 +1,4 @@ | |||
| 1 | #ifndef _ASM_M32R_HW_IRQ_H | 1 | #ifndef _ASM_M32R_HW_IRQ_H |
| 2 | #define _ASM_M32R_HW_IRQ_H | 2 | #define _ASM_M32R_HW_IRQ_H |
| 3 | 3 | ||
| 4 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
| 5 | { | ||
| 6 | /* Nothing to do */ | ||
| 7 | } | ||
| 8 | |||
| 9 | #endif /* _ASM_M32R_HW_IRQ_H */ | 4 | #endif /* _ASM_M32R_HW_IRQ_H */ |
diff --git a/include/asm-mips/hw_irq.h b/include/asm-mips/hw_irq.h index c854d017c0..458d9fdc76 100644 --- a/include/asm-mips/hw_irq.h +++ b/include/asm-mips/hw_irq.h | |||
| @@ -19,9 +19,9 @@ extern void init_8259A(int aeoi); | |||
| 19 | 19 | ||
| 20 | extern atomic_t irq_err_count; | 20 | extern atomic_t irq_err_count; |
| 21 | 21 | ||
| 22 | /* This may not be apropriate for all machines, we'll see ... */ | 22 | /* |
| 23 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | 23 | * interrupt-retrigger: NOP for now. This may not be apropriate for all |
| 24 | { | 24 | * machines, we'll see ... |
| 25 | } | 25 | */ |
| 26 | 26 | ||
| 27 | #endif /* __ASM_HW_IRQ_H */ | 27 | #endif /* __ASM_HW_IRQ_H */ |
diff --git a/include/asm-parisc/hw_irq.h b/include/asm-parisc/hw_irq.h index 151426e275..6707f7df39 100644 --- a/include/asm-parisc/hw_irq.h +++ b/include/asm-parisc/hw_irq.h | |||
| @@ -3,15 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | /* | 4 | /* |
| 5 | * linux/include/asm/hw_irq.h | 5 | * linux/include/asm/hw_irq.h |
| 6 | * | ||
| 7 | * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar | ||
| 8 | * | ||
| 9 | * moved some of the old arch/i386/kernel/irq.h to here. VY | ||
| 10 | * | ||
| 11 | * IRQ/IPI changes taken from work by Thomas Radke | ||
| 12 | * <tomsoft@informatik.tu-chemnitz.de> | ||
| 13 | */ | 6 | */ |
| 14 | 7 | ||
| 15 | extern void hw_resend_irq(struct hw_interrupt_type *, unsigned int); | ||
| 16 | |||
| 17 | #endif | 8 | #endif |
diff --git a/include/asm-powerpc/hw_irq.h b/include/asm-powerpc/hw_irq.h index a27ed3feb3..d40359204a 100644 --- a/include/asm-powerpc/hw_irq.h +++ b/include/asm-powerpc/hw_irq.h | |||
| @@ -102,11 +102,11 @@ static inline void local_irq_save_ptr(unsigned long *flags) | |||
| 102 | desc->chip->ack(irq); \ | 102 | desc->chip->ack(irq); \ |
| 103 | }) | 103 | }) |
| 104 | 104 | ||
| 105 | /* Should we handle this via lost interrupts and IPIs or should we don't care like | 105 | /* |
| 106 | * we do now ? --BenH. | 106 | * interrupt-retrigger: should we handle this via lost interrupts and IPIs |
| 107 | * or should we not care like we do now ? --BenH. | ||
| 107 | */ | 108 | */ |
| 108 | struct hw_interrupt_type; | 109 | struct hw_interrupt_type; |
| 109 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
| 110 | 110 | ||
| 111 | #endif /* __KERNEL__ */ | 111 | #endif /* __KERNEL__ */ |
| 112 | #endif /* _ASM_POWERPC_HW_IRQ_H */ | 112 | #endif /* _ASM_POWERPC_HW_IRQ_H */ |
diff --git a/include/asm-sh/hw_irq.h b/include/asm-sh/hw_irq.h index 1d934fb2c5..fed2661696 100644 --- a/include/asm-sh/hw_irq.h +++ b/include/asm-sh/hw_irq.h | |||
| @@ -1,9 +1,4 @@ | |||
| 1 | #ifndef __ASM_SH_HW_IRQ_H | 1 | #ifndef __ASM_SH_HW_IRQ_H |
| 2 | #define __ASM_SH_HW_IRQ_H | 2 | #define __ASM_SH_HW_IRQ_H |
| 3 | 3 | ||
| 4 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
| 5 | { | ||
| 6 | /* Nothing to do */ | ||
| 7 | } | ||
| 8 | |||
| 9 | #endif /* __ASM_SH_HW_IRQ_H */ | 4 | #endif /* __ASM_SH_HW_IRQ_H */ |
diff --git a/include/asm-sh64/hw_irq.h b/include/asm-sh64/hw_irq.h index ae718d1f2d..ebb39089b0 100644 --- a/include/asm-sh64/hw_irq.h +++ b/include/asm-sh64/hw_irq.h | |||
| @@ -11,6 +11,5 @@ | |||
| 11 | * Copyright (C) 2000, 2001 Paolo Alberelli | 11 | * Copyright (C) 2000, 2001 Paolo Alberelli |
| 12 | * | 12 | * |
| 13 | */ | 13 | */ |
| 14 | static __inline__ void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) { /* Nothing to do */ } | ||
| 15 | 14 | ||
| 16 | #endif /* __ASM_SH64_HW_IRQ_H */ | 15 | #endif /* __ASM_SH64_HW_IRQ_H */ |
diff --git a/include/asm-um/hw_irq.h b/include/asm-um/hw_irq.h index 4ee38c0b6a..1cf84cf5f2 100644 --- a/include/asm-um/hw_irq.h +++ b/include/asm-um/hw_irq.h | |||
| @@ -4,7 +4,4 @@ | |||
| 4 | #include "asm/irq.h" | 4 | #include "asm/irq.h" |
| 5 | #include "asm/archparam.h" | 5 | #include "asm/archparam.h" |
| 6 | 6 | ||
| 7 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
| 8 | {} | ||
| 9 | |||
| 10 | #endif | 7 | #endif |
diff --git a/include/asm-v850/hw_irq.h b/include/asm-v850/hw_irq.h index a8aab43427..043e94bb6b 100644 --- a/include/asm-v850/hw_irq.h +++ b/include/asm-v850/hw_irq.h | |||
| @@ -1,8 +1,4 @@ | |||
| 1 | #ifndef __V850_HW_IRQ_H__ | 1 | #ifndef __V850_HW_IRQ_H__ |
| 2 | #define __V850_HW_IRQ_H__ | 2 | #define __V850_HW_IRQ_H__ |
| 3 | 3 | ||
| 4 | static inline void hw_resend_irq (struct hw_interrupt_type *h, unsigned int i) | ||
| 5 | { | ||
| 6 | } | ||
| 7 | |||
| 8 | #endif /* __V850_HW_IRQ_H__ */ | 4 | #endif /* __V850_HW_IRQ_H__ */ |
diff --git a/include/asm-x86_64/hw_irq.h b/include/asm-x86_64/hw_irq.h index 9318774627..48a4a5364e 100644 --- a/include/asm-x86_64/hw_irq.h +++ b/include/asm-x86_64/hw_irq.h | |||
| @@ -127,15 +127,6 @@ __asm__( \ | |||
| 127 | "push $~(" #nr ") ; " \ | 127 | "push $~(" #nr ") ; " \ |
| 128 | "jmp common_interrupt"); | 128 | "jmp common_interrupt"); |
| 129 | 129 | ||
| 130 | #if defined(CONFIG_X86_IO_APIC) | ||
| 131 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) { | ||
| 132 | if (IO_APIC_IRQ(i)) | ||
| 133 | send_IPI_self(IO_APIC_VECTOR(i)); | ||
| 134 | } | ||
| 135 | #else | ||
| 136 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {} | ||
| 137 | #endif | ||
| 138 | |||
| 139 | #define platform_legacy_irq(irq) ((irq) < 16) | 130 | #define platform_legacy_irq(irq) ((irq) < 16) |
| 140 | 131 | ||
| 141 | #endif | 132 | #endif |
diff --git a/include/asm-xtensa/hw_irq.h b/include/asm-xtensa/hw_irq.h index ccf436249e..3ddbea759b 100644 --- a/include/asm-xtensa/hw_irq.h +++ b/include/asm-xtensa/hw_irq.h | |||
| @@ -11,8 +11,4 @@ | |||
| 11 | #ifndef _XTENSA_HW_IRQ_H | 11 | #ifndef _XTENSA_HW_IRQ_H |
| 12 | #define _XTENSA_HW_IRQ_H | 12 | #define _XTENSA_HW_IRQ_H |
| 13 | 13 | ||
| 14 | static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) | ||
| 15 | { | ||
| 16 | } | ||
| 17 | |||
| 18 | #endif | 14 | #endif |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 519a1cb7c3..e58cfb9c66 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -53,6 +53,8 @@ struct hw_interrupt_type { | |||
| 53 | void (*ack)(unsigned int irq); | 53 | void (*ack)(unsigned int irq); |
| 54 | void (*end)(unsigned int irq); | 54 | void (*end)(unsigned int irq); |
| 55 | void (*set_affinity)(unsigned int irq, cpumask_t dest); | 55 | void (*set_affinity)(unsigned int irq, cpumask_t dest); |
| 56 | int (*retrigger)(unsigned int irq); | ||
| 57 | |||
| 56 | /* Currently used only by UML, might disappear one day.*/ | 58 | /* Currently used only by UML, might disappear one day.*/ |
| 57 | #ifdef CONFIG_IRQ_RELEASE_METHOD | 59 | #ifdef CONFIG_IRQ_RELEASE_METHOD |
| 58 | void (*release)(unsigned int irq, void *dev_id); | 60 | void (*release)(unsigned int irq, void *dev_id); |
