diff options
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index 050141c0602b..f57f8b901912 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -800,12 +800,15 @@ static struct irq_chip ioapic_chip; | |||
800 | 800 | ||
801 | static void ioapic_register_intr(int irq, unsigned long trigger) | 801 | static void ioapic_register_intr(int irq, unsigned long trigger) |
802 | { | 802 | { |
803 | if (trigger) | 803 | if (trigger) { |
804 | irq_desc[irq].status |= IRQ_LEVEL; | ||
804 | set_irq_chip_and_handler_name(irq, &ioapic_chip, | 805 | set_irq_chip_and_handler_name(irq, &ioapic_chip, |
805 | handle_fasteoi_irq, "fasteoi"); | 806 | handle_fasteoi_irq, "fasteoi"); |
806 | else | 807 | } else { |
808 | irq_desc[irq].status &= ~IRQ_LEVEL; | ||
807 | set_irq_chip_and_handler_name(irq, &ioapic_chip, | 809 | set_irq_chip_and_handler_name(irq, &ioapic_chip, |
808 | handle_edge_irq, "edge"); | 810 | handle_edge_irq, "edge"); |
811 | } | ||
809 | } | 812 | } |
810 | 813 | ||
811 | static void setup_IO_APIC_irq(int apic, int pin, unsigned int irq, | 814 | static void setup_IO_APIC_irq(int apic, int pin, unsigned int irq, |