diff options
Diffstat (limited to 'arch/i386/kernel/io_apic.c')
-rw-r--r-- | arch/i386/kernel/io_apic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 893df8280756..4b8a8da4b2e0 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -1256,12 +1256,15 @@ static struct irq_chip ioapic_chip; | |||
1256 | static void ioapic_register_intr(int irq, int vector, unsigned long trigger) | 1256 | static void ioapic_register_intr(int irq, int vector, unsigned long trigger) |
1257 | { | 1257 | { |
1258 | if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) || | 1258 | if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) || |
1259 | trigger == IOAPIC_LEVEL) | 1259 | trigger == IOAPIC_LEVEL) { |
1260 | irq_desc[irq].status |= IRQ_LEVEL; | ||
1260 | set_irq_chip_and_handler_name(irq, &ioapic_chip, | 1261 | set_irq_chip_and_handler_name(irq, &ioapic_chip, |
1261 | handle_fasteoi_irq, "fasteoi"); | 1262 | handle_fasteoi_irq, "fasteoi"); |
1262 | else | 1263 | } else { |
1264 | irq_desc[irq].status &= ~IRQ_LEVEL; | ||
1263 | set_irq_chip_and_handler_name(irq, &ioapic_chip, | 1265 | set_irq_chip_and_handler_name(irq, &ioapic_chip, |
1264 | handle_edge_irq, "edge"); | 1266 | handle_edge_irq, "edge"); |
1267 | } | ||
1265 | set_intr_gate(vector, interrupt[irq]); | 1268 | set_intr_gate(vector, interrupt[irq]); |
1266 | } | 1269 | } |
1267 | 1270 | ||