target/i386: Added ignore TPR check in ctl_has_irq
authorLara Lazier <laramglazier@gmail.com>
Tue, 17 Aug 2021 17:30:45 +0000 (19:30 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 13 Sep 2021 11:56:26 +0000 (13:56 +0200)
The APM2 states that if V_IGN_TPR is nonzero, the current
virtual interrupt ignores the (virtual) TPR.

Signed-off-by: Lara Lazier <laramglazier@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/tcg/sysemu/svm_helper.c

index 4612dae1ac6f0db2173ea295dab84521cf578de2..a35b79548ab7c7cef3df49d8305597d193962144 100644 (file)
@@ -83,6 +83,11 @@ static inline bool ctl_has_irq(CPUX86State *env)
 
     int_prio = (env->int_ctl & V_INTR_PRIO_MASK) >> V_INTR_PRIO_SHIFT;
     tpr = env->int_ctl & V_TPR_MASK;
+
+    if (env->int_ctl & V_IGN_TPR_MASK) {
+        return env->int_ctl & V_IRQ_MASK;
+    }
+
     return (env->int_ctl & V_IRQ_MASK) && (int_prio >= tpr);
 }