Changeset 99999 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- May 30, 2023 5:50:03 AM (20 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/EM.cpp
r99995 r99999 2546 2546 if (TRPMHasTrap(pVCpu)) 2547 2547 rc = VINF_EM_RESCHEDULE; 2548 #if !defined(VBOX_VMM_TARGET_ARMV8) 2548 2549 /* MWAIT has a special extension where it's woken up when 2549 2550 an interrupt is pending even when IF=0. */ … … 2551 2552 == (EMMWAIT_FLAG_ACTIVE | EMMWAIT_FLAG_BREAKIRQIF0)) 2552 2553 { 2553 rc = VMR3WaitHalted(pVM, pVCpu, false /*fIgnoreInterrupts*/);2554 rc = VMR3WaitHalted(pVM, pVCpu, 0 /*fFlags*/); 2554 2555 if (rc == VINF_SUCCESS) 2555 2556 { 2556 #if defined(VBOX_VMM_TARGET_ARMV8)2557 if (VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_IRQ | VMCPU_FF_INTERRUPT_FIQ2558 | VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT))2559 {2560 Log(("EMR3ExecuteVM: Triggering reschedule on pending IRQ after MWAIT\n"));2561 rc = VINF_EM_RESCHEDULE;2562 }2563 #else2564 2557 if (VMCPU_FF_TEST_AND_CLEAR(pVCpu, VMCPU_FF_UPDATE_APIC)) 2565 2558 APICUpdatePendingInterrupts(pVCpu); … … 2572 2565 rc = VINF_EM_RESCHEDULE; 2573 2566 } 2574 #endif 2567 2575 2568 } 2576 2569 } 2570 #endif 2577 2571 else 2578 2572 { 2579 2573 #if defined(VBOX_VMM_TARGET_ARMV8) 2580 uint32_t fWaitHalted = (CPUMGetGuestIrqMasked(pVCpu) ? VMWAITHALTED_F_IGNORE_IRQS : 0) 2581 | (CPUMGetGuestFiqMasked(pVCpu) ? VMWAITHALTED_F_IGNORE_FIQS : 0); 2574 const uint32_t fWaitHalted = 0; /* WFI/WFE always return when an interrupt happens. */ 2582 2575 #else 2583 uint32_t fWaitHalted = (CPUMGetGuestEFlags(pVCpu) & X86_EFL_IF) ? 0 : VMWAITHALTED_F_IGNORE_IRQS;2576 const uint32_t fWaitHalted = (CPUMGetGuestEFlags(pVCpu) & X86_EFL_IF) ? 0 : VMWAITHALTED_F_IGNORE_IRQS; 2584 2577 #endif 2585 2578 rc = VMR3WaitHalted(pVM, pVCpu, fWaitHalted); … … 2587 2580 check VMCPU_FF_UPDATE_APIC here. */ 2588 2581 if ( rc == VINF_SUCCESS 2589 && VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT)) 2582 #if defined(VBOX_VMM_TARGET_ARMV8) 2583 && VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_VTIMER_ACTIVATED 2584 | VMCPU_FF_INTERRUPT_FIQ | VMCPU_FF_INTERRUPT_IRQ) 2585 #else 2586 && VMCPU_FF_IS_ANY_SET(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_UNHALT) 2587 #endif 2588 ) 2590 2589 { 2591 2590 Log(("EMR3ExecuteVM: Triggering reschedule on pending NMI/SMI/UNHALT after HLT\n"));
Note:
See TracChangeset
for help on using the changeset viewer.