From 4a87fcc4cf61a4b4d2afe531d17413cc4903729c Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Wed, 8 Sep 2021 16:22:11 +0200 Subject: [PATCH] vbox6: fix TPR handling --- repos/ports/src/virtualbox6/sup_vcpu.cc | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/repos/ports/src/virtualbox6/sup_vcpu.cc b/repos/ports/src/virtualbox6/sup_vcpu.cc index ad25b6ef88..c6839d6680 100644 --- a/repos/ports/src/virtualbox6/sup_vcpu.cc +++ b/repos/ports/src/virtualbox6/sup_vcpu.cc @@ -554,7 +554,7 @@ typename Sup::Vcpu_impl::Current_state Sup::Vcpu_impl::_handle_irq_window( _irq_window = false; /* request current tpr state from guest, it may block IRQs */ - APICSetTpr(pVCpu, state.tpr_threshold.value()); + APICSetTpr(pVCpu, state.tpr.value()); if (!TRPMHasTrap(pVCpu)) { @@ -567,16 +567,15 @@ typename Sup::Vcpu_impl::Current_state Sup::Vcpu_impl::_handle_irq_window( uint8_t irq; int rc = PDMGetInterrupt(pVCpu, &irq); - Assert(RT_SUCCESS(rc)); - - rc = TRPMAssertTrap(pVCpu, irq, TRPM_HARDWARE_INT); - Assert(RT_SUCCESS(rc)); + if (RT_SUCCESS(rc)) { + rc = TRPMAssertTrap(pVCpu, irq, TRPM_HARDWARE_INT); + Assert(RT_SUCCESS(rc)); + } } if (!TRPMHasTrap(pVCpu)) { /* happens if APICSetTpr (see above) mask IRQ */ state.inj_info.charge(VMX_ENTRY_INT_INFO_NONE); - Genode::error("virq window pthread aaaaaaa while loop"); return PAUSED; } }