[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>
This commit is contained in:
committed by
Linus Torvalds
parent
096c8131c5
commit
c0ad90a32f
@@ -2,8 +2,6 @@
|
||||
#define _ALPHA_HW_IRQ_H
|
||||
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
|
||||
|
||||
extern volatile unsigned long irq_err_count;
|
||||
|
||||
#ifdef CONFIG_ALPHA_GENERIC
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#ifndef _ASM_HW_IRQ_H
|
||||
#define _ASM_HW_IRQ_H
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -69,14 +69,4 @@ extern atomic_t irq_mis_count;
|
||||
|
||||
#define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
|
||||
|
||||
#if defined(CONFIG_X86_IO_APIC)
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
if (IO_APIC_IRQ(i))
|
||||
send_IPI_self(IO_APIC_VECTOR(i));
|
||||
}
|
||||
#else
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_HW_IRQ_H */
|
||||
|
||||
@@ -97,8 +97,7 @@ extern int reserve_irq_vector (int vector);
|
||||
extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect);
|
||||
extern void register_percpu_irq (ia64_vector vec, struct irqaction *action);
|
||||
|
||||
static inline void
|
||||
hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector)
|
||||
static inline void ia64_resend_irq(unsigned int vector)
|
||||
{
|
||||
platform_send_ipi(smp_processor_id(), vector, IA64_IPI_DM_INT, 0);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
#ifndef _ASM_M32R_HW_IRQ_H
|
||||
#define _ASM_M32R_HW_IRQ_H
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
/* Nothing to do */
|
||||
}
|
||||
|
||||
#endif /* _ASM_M32R_HW_IRQ_H */
|
||||
|
||||
@@ -19,9 +19,9 @@ extern void init_8259A(int aeoi);
|
||||
|
||||
extern atomic_t irq_err_count;
|
||||
|
||||
/* This may not be apropriate for all machines, we'll see ... */
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
}
|
||||
/*
|
||||
* interrupt-retrigger: NOP for now. This may not be apropriate for all
|
||||
* machines, we'll see ...
|
||||
*/
|
||||
|
||||
#endif /* __ASM_HW_IRQ_H */
|
||||
|
||||
@@ -3,15 +3,6 @@
|
||||
|
||||
/*
|
||||
* linux/include/asm/hw_irq.h
|
||||
*
|
||||
* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar
|
||||
*
|
||||
* moved some of the old arch/i386/kernel/irq.h to here. VY
|
||||
*
|
||||
* IRQ/IPI changes taken from work by Thomas Radke
|
||||
* <tomsoft@informatik.tu-chemnitz.de>
|
||||
*/
|
||||
|
||||
extern void hw_resend_irq(struct hw_interrupt_type *, unsigned int);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -102,11 +102,11 @@ static inline void local_irq_save_ptr(unsigned long *flags)
|
||||
desc->chip->ack(irq); \
|
||||
})
|
||||
|
||||
/* Should we handle this via lost interrupts and IPIs or should we don't care like
|
||||
* we do now ? --BenH.
|
||||
/*
|
||||
* interrupt-retrigger: should we handle this via lost interrupts and IPIs
|
||||
* or should we not care like we do now ? --BenH.
|
||||
*/
|
||||
struct hw_interrupt_type;
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _ASM_POWERPC_HW_IRQ_H */
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
#ifndef __ASM_SH_HW_IRQ_H
|
||||
#define __ASM_SH_HW_IRQ_H
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
/* Nothing to do */
|
||||
}
|
||||
|
||||
#endif /* __ASM_SH_HW_IRQ_H */
|
||||
|
||||
@@ -11,6 +11,5 @@
|
||||
* Copyright (C) 2000, 2001 Paolo Alberelli
|
||||
*
|
||||
*/
|
||||
static __inline__ void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) { /* Nothing to do */ }
|
||||
|
||||
#endif /* __ASM_SH64_HW_IRQ_H */
|
||||
|
||||
@@ -4,7 +4,4 @@
|
||||
#include "asm/irq.h"
|
||||
#include "asm/archparam.h"
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
#ifndef __V850_HW_IRQ_H__
|
||||
#define __V850_HW_IRQ_H__
|
||||
|
||||
static inline void hw_resend_irq (struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* __V850_HW_IRQ_H__ */
|
||||
|
||||
@@ -127,15 +127,6 @@ __asm__( \
|
||||
"push $~(" #nr ") ; " \
|
||||
"jmp common_interrupt");
|
||||
|
||||
#if defined(CONFIG_X86_IO_APIC)
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {
|
||||
if (IO_APIC_IRQ(i))
|
||||
send_IPI_self(IO_APIC_VECTOR(i));
|
||||
}
|
||||
#else
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i) {}
|
||||
#endif
|
||||
|
||||
#define platform_legacy_irq(irq) ((irq) < 16)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -11,8 +11,4 @@
|
||||
#ifndef _XTENSA_HW_IRQ_H
|
||||
#define _XTENSA_HW_IRQ_H
|
||||
|
||||
static inline void hw_resend_irq(struct hw_interrupt_type *h, unsigned int i)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -53,6 +53,8 @@ struct hw_interrupt_type {
|
||||
void (*ack)(unsigned int irq);
|
||||
void (*end)(unsigned int irq);
|
||||
void (*set_affinity)(unsigned int irq, cpumask_t dest);
|
||||
int (*retrigger)(unsigned int irq);
|
||||
|
||||
/* Currently used only by UML, might disappear one day.*/
|
||||
#ifdef CONFIG_IRQ_RELEASE_METHOD
|
||||
void (*release)(unsigned int irq, void *dev_id);
|
||||
|
||||
Reference in New Issue
Block a user