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.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/ioapic.c b/hw/ioapic.c
index 5916387f0d..61991d7679 100644
--- a/hw/ioapic.c
+++ b/hw/ioapic.c
@@ -148,6 +148,9 @@ static void ioapic_set_irq(void *opaque, int vector, int level)
         uint32_t mask = 1 << vector;
         uint64_t entry = s->ioredtbl[vector];
 
+        if (entry & (1 << IOAPIC_LVT_POLARITY_SHIFT)) {
+            level = !level;
+        }
         if (((entry >> IOAPIC_LVT_TRIGGER_MODE_SHIFT) & 1) ==
             IOAPIC_TRIGGER_LEVEL) {
             /* level triggered */