|
@@ -1256,12 +1256,15 @@ static struct irq_chip ioapic_chip;
|
|
|
static void ioapic_register_intr(int irq, int vector, unsigned long trigger)
|
|
|
{
|
|
|
if ((trigger == IOAPIC_AUTO && IO_APIC_irq_trigger(irq)) ||
|
|
|
- trigger == IOAPIC_LEVEL)
|
|
|
+ trigger == IOAPIC_LEVEL) {
|
|
|
+ irq_desc[irq].status |= IRQ_LEVEL;
|
|
|
set_irq_chip_and_handler_name(irq, &ioapic_chip,
|
|
|
handle_fasteoi_irq, "fasteoi");
|
|
|
- else
|
|
|
+ } else {
|
|
|
+ irq_desc[irq].status &= ~IRQ_LEVEL;
|
|
|
set_irq_chip_and_handler_name(irq, &ioapic_chip,
|
|
|
handle_edge_irq, "edge");
|
|
|
+ }
|
|
|
set_intr_gate(vector, interrupt[irq]);
|
|
|
}
|
|
|
|