VirtualBox

Changeset 51934 in vbox


Ignore:
Timestamp:
Jul 8, 2014 2:35:49 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
94826
Message:

VMM/EM: Reschedule halted VCPUs if NMI/SMI shows up.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/vm.h

    r51852 r51934  
    424424/** Externally forced VMCPU actions. Used to quit the idle/wait loop. */
    425425#define VMCPU_FF_EXTERNAL_HALTED_MASK           (  VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC | VMCPU_FF_REQUEST \
    426                                                  | VMCPU_FF_TIMER)
     426                                                 | VMCPU_FF_INTERRUPT_NMI  | VMCPU_FF_INTERRUPT_SMI | VMCPU_FF_TIMER)
    427427
    428428/** High priority VM pre-execution actions. */
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r49893 r51934  
    25512551                        rc = VMR3WaitHalted(pVM, pVCpu, false /*fIgnoreInterrupts*/);
    25522552                        if (   rc == VINF_SUCCESS
    2553                             && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC))
     2553                            && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC
     2554                                                        | VMCPU_FF_INTERRUPT_NMI  | VMCPU_FF_INTERRUPT_SMI))
    25542555                        {
    25552556                            Log(("EMR3ExecuteVM: Triggering reschedule on pending IRQ after MWAIT\n"));
     
    25582559                    }
    25592560                    else
     2561                    {
    25602562                        rc = VMR3WaitHalted(pVM, pVCpu, !(CPUMGetGuestEFlags(pVCpu) & X86_EFL_IF));
     2563                        if (   rc == VINF_SUCCESS
     2564                            && VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_NMI | VMCPU_FF_INTERRUPT_SMI))
     2565                        {
     2566                            Log(("EMR3ExecuteVM: Triggering reschedule on pending NMI/SMI after HLT\n"));
     2567                            rc = VINF_EM_RESCHEDULE;
     2568                        }
     2569                    }
    25612570
    25622571                    STAM_REL_PROFILE_STOP(&pVCpu->em.s.StatHalted, y);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette