--- src/kernel/sel4/src/plat/pc99/machine/ioapic.c +++ src/kernel/sel4/src/plat/pc99/machine/ioapic.c @@ -127,6 +127,9 @@ void ioapic_mask(bool_t mask, uint32_t ioapic, uint32_t pin) return; } if (mask) { + /* only mask level triggered interrupts */ + if (!(ioredtbl_state[index] & IOREDTBL_LOW_TRIGGER_MODE_LEVEL)) + return; ioredtbl_state[index] |= IOREDTBL_LOW_INTERRUPT_MASK; } else { ioredtbl_state[index] &= ~IOREDTBL_LOW_INTERRUPT_MASK;