VirtualBox

Changeset 78639 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
May 21, 2019 4:16:30 PM (6 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Nested VMX: bugref:9180 task-switch VM-exit handling.

File:
1 edited

Legend:

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

    r78632 r78639  
    1271512715        case VMX_EXIT_MWAIT:
    1271612716        case VMX_EXIT_MONITOR:
    12717         case VMX_EXIT_TASK_SWITCH:
    1271812717        case VMX_EXIT_PREEMPT_TIMER:
    1271912718
     
    1275312752            else
    1275412753                rcStrict = hmR0VmxExitWrmsr(pVCpu, pVmxTransient);
     12754            break;
     12755        }
     12756
     12757        case VMX_EXIT_TASK_SWITCH:
     12758        {
     12759            int rc = hmR0VmxReadExitQualVmcs(pVCpu, pVmxTransient);
     12760            rc    |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     12761            rc    |= hmR0VmxReadIdtVectoringInfoVmcs(pVmxTransient);
     12762            if (VMX_IDT_VECTORING_INFO_IS_VALID(pVmxTransient->uIdtVectoringInfo))
     12763                rc |= hmR0VmxReadIdtVectoringErrorCodeVmcs(pVmxTransient);
     12764            else
     12765            {
     12766                pVmxTransient->uIdtVectoringInfo      = 0;
     12767                pVmxTransient->uIdtVectoringErrorCode = 0;
     12768            }
     12769            AssertRCReturn(rc, rc);
     12770
     12771            VMXVEXITINFO ExitInfo;
     12772            RT_ZERO(ExitInfo);
     12773            ExitInfo.cbInstr = pVmxTransient->cbInstr;
     12774            ExitInfo.u64Qual = pVmxTransient->uExitQual;
     12775
     12776            VMXVEXITEVENTINFO ExitEventInfo;
     12777            RT_ZERO(ExitInfo);
     12778            ExitEventInfo.uIdtVectoringInfo    = pVmxTransient->uIdtVectoringInfo;
     12779            ExitEventInfo.uIdtVectoringErrCode = pVmxTransient->uIdtVectoringErrorCode;
     12780
     12781            rcStrict = IEMExecVmxVmexitTaskSwitch(pVCpu, &ExitInfo, &ExitEventInfo);
    1275512782            break;
    1275612783        }
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