summary refs log tree commit diff stats
path: root/hw/ioapic.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/ioapic.c')
-rw-r--r--hw/ioapic.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/ioapic.c b/hw/ioapic.c
index 569327d1e9..6c26e820e0 100644
--- a/hw/ioapic.c
+++ b/hw/ioapic.c
@@ -160,8 +160,9 @@ static void ioapic_set_irq(void *opaque, int vector, int level)
                 s->irr &= ~mask;
             }
         } else {
-            /* edge triggered */
-            if (level) {
+            /* According to the 82093AA manual, we must ignore edge requests
+             * if the input pin is masked. */
+            if (level && !(entry & IOAPIC_LVT_MASKED)) {
                 s->irr |= mask;
                 ioapic_service(s);
             }