VirtualBox

Changeset 48220 in vbox for trunk/src


Ignore:
Timestamp:
Sep 1, 2013 10:46:04 PM (11 years ago)
Author:
vboxsync
Message:

HMVMXR0.cpp: When the guest switches from long mode to one of the legacy modes, we may end up with the wrong host-resume values from what I can tell. Attempting a quick fix to see if that helps with the host tripple faults I'm having.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r48219 r48220  
    40674067    {
    40684068        /* Guest is not in long mode, use the 32-bit handler. */
     4069#if HC_ARCH_BITS == 32 && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     4070        if (pVCpu->hm.s.vmx.pfnStartVM != VMXR0StartVM32)
     4071        {
     4072            pVCpu->hm.s.vmx.pfnStartVM = VMXR0StartVM32;
     4073            /** @todo r=bird: Don't we need to set up the host resume (after
     4074             *        vmlaunch/vmresume) state here??  I'm forcing a trip to ring-3 now
     4075             *        in the hope that it will prevent crashing the host.  A better
     4076             *        fix should be found as the guest may be going back and forth
     4077             *        between 16/32-bit and long mode frequently at times. */
     4078            VMCPU_FF_SET(pVCpu, VMCPU_FF_TO_R3);
     4079        }
     4080#else
    40694081        pVCpu->hm.s.vmx.pfnStartVM = VMXR0StartVM32;
     4082#endif
    40704083    }
    40714084    Assert(pVCpu->hm.s.vmx.pfnStartVM);
     
    73357348        return VINF_EM_RAW_TO_R3;
    73367349    }
    7337     else if (RTThreadPreemptIsPending(NIL_RTTHREAD))
     7350    if (RTThreadPreemptIsPending(NIL_RTTHREAD))
    73387351    {
    73397352        ASMSetFlags(pVmxTransient->uEflags);
Note: See TracChangeset for help on using the changeset viewer.

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