diff --git a/repos/ports/src/virtualbox6/sup_vcpu.cc b/repos/ports/src/virtualbox6/sup_vcpu.cc index 3e262a527f..0d2ca42c1a 100644 --- a/repos/ports/src/virtualbox6/sup_vcpu.cc +++ b/repos/ports/src/virtualbox6/sup_vcpu.cc @@ -254,8 +254,6 @@ template void Sup::Vcpu_impl::_transfer_state_to_vcpu(CPUM const uint8_t tpr_priority = (tpr >> 4) & 0xf; if (pending_priority <= tpr_priority) state.tpr_threshold.charge(pending_priority); - else - state.tpr_threshold.charge(tpr_priority); } /* export FPU state */ @@ -563,6 +561,8 @@ typename Sup::Vcpu_impl::Current_state Sup::Vcpu_impl::_handle_irq_window( if (RT_SUCCESS(rc)) { rc = TRPMAssertTrap(pVCpu, irq, TRPM_HARDWARE_INT); Assert(RT_SUCCESS(rc)); + } else if (rc == VERR_APIC_INTR_MASKED_BY_TPR) { + state.tpr_threshold.charge(irq >> 4); } }