aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/kernel')
-rw-r--r--arch/i386/kernel/io_apic.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index afe54f257cb8..ec9ea0269d36 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -2071,6 +2071,13 @@ static void set_ioapic_affinity_vector (unsigned int vector,
2071#endif 2071#endif
2072#endif 2072#endif
2073 2073
2074static int ioapic_retrigger(unsigned int irq)
2075{
2076 send_IPI_self(IO_APIC_VECTOR(irq));
2077
2078 return 1;
2079}
2080
2074/* 2081/*
2075 * Level and edge triggered IO-APIC interrupts need different handling, 2082 * Level and edge triggered IO-APIC interrupts need different handling,
2076 * so we use two separate IRQ descriptors. Edge triggered IRQs can be 2083 * so we use two separate IRQ descriptors. Edge triggered IRQs can be
@@ -2090,6 +2097,7 @@ static struct hw_interrupt_type ioapic_edge_type __read_mostly = {
2090#ifdef CONFIG_SMP 2097#ifdef CONFIG_SMP
2091 .set_affinity = set_ioapic_affinity, 2098 .set_affinity = set_ioapic_affinity,
2092#endif 2099#endif
2100 .retrigger = ioapic_retrigger,
2093}; 2101};
2094 2102
2095static struct hw_interrupt_type ioapic_level_type __read_mostly = { 2103static struct hw_interrupt_type ioapic_level_type __read_mostly = {
@@ -2103,6 +2111,7 @@ static struct hw_interrupt_type ioapic_level_type __read_mostly = {
2103#ifdef CONFIG_SMP 2111#ifdef CONFIG_SMP
2104 .set_affinity = set_ioapic_affinity, 2112 .set_affinity = set_ioapic_affinity,
2105#endif 2113#endif
2114 .retrigger = ioapic_retrigger,
2106}; 2115};
2107 2116
2108static inline void init_IO_APIC_traps(void) 2117static inline void init_IO_APIC_traps(void)