VirtualBox

儲存庫 vbox 的更動 48038


忽略:
時間撮記:
2013-8-23 下午07:35:02 (11 年 以前)
作者:
vboxsync
訊息:

VMM/VMMR0, HMVMXR0: Minor fixes relating to error paths.

位置:
trunk/src/VBox/VMM/VMMR0
檔案:
修改 2 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r48037 r48038  
    61626162    Assert(!VMMRZCallRing3IsEnabled(pVCpu));
    61636163
    6164     /* Avoid repeating this work when thread-context hooks are used and we had been preempted before
    6165        which would've done this work from the VMXR0ThreadCtxCallback(). */
    61666164    RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
    61676165    bool fPreemptDisabled = false;
     
    61736171    }
    61746172
     6173    /* Avoid repeating this work when thread-context hooks are used and we had been preempted before
     6174       which would've done this work from the VMXR0ThreadCtxCallback(). */
    61756175    if (!pVCpu->hm.s.fLeaveDone)
    61766176    {
     
    62376237    if (RT_UNLIKELY(rcExit == VERR_VMX_INVALID_GUEST_STATE))
    62386238    {
    6239         /* We want to see what the guest-state was before VM-entry, don't resync here, as we won't continue guest execution. */
     6239        /* We've done what is required in hmR0VmxExitErrInvalidGuestState(). We're not going to continue guest execution... */
    62406240        return;
    62416241    }
     
    62456245        pVCpu->hm.s.vmx.LastError.u32VMCSRevision = *(uint32_t *)pVCpu->hm.s.vmx.pvVmcs;
    62466246        pVCpu->hm.s.vmx.LastError.idEnteredCpu    = pVCpu->hm.s.idEnteredCpu;
    6247         pVCpu->hm.s.vmx.LastError.idCurrentCpu    = RTMpCpuId();
     6247        /* LastError.idCurrentCpu was updated in hmR0VmxPreRunGuestCommitted(). */
    62486248        return;
    62496249    }
     
    90939093    NOREF(uInvalidReason);
    90949094
     9095#ifdef VBOX_STRICT
    90959096    Log4(("VMX_VMCS32_CTRL_ENTRY_INTERRUPTION_INFO    %#RX32\n", pVmxTransient->uEntryIntrInfo));
    90969097    Log4(("VMX_VMCS32_CTRL_ENTRY_EXCEPTION_ERRCODE    %#RX32\n", pVmxTransient->uEntryXcptErrorCode));
     
    91109111    rc = VMXReadVmcs64(VMX_VMCS64_CTRL_EPTP_FULL, &u64Val);                 AssertRC(rc);
    91119112    Log4(("VMX_VMCS64_CTRL_EPTP_FULL                  %#RX64\n", u64Val));
     9113#endif
    91129114
    91139115    PVM pVM = pVCpu->CTX_SUFF(pVM);
  • trunk/src/VBox/VMM/VMMR0/VMMR0.cpp

    r48032 r48038  
    568568
    569569        case RTTHREADCTXEVENT_PREEMPTING:
     570        {
     571            /* Invoke the HM-specific thread-context callback. */
     572            HMR0ThreadCtxCallback(enmEvent, pvUser);
     573
    570574            /*
    571575             * Sigh. See VMMGetCpu() used by VMCPU_ASSERT_EMT(). We cannot let several VCPUs
     
    573577             */
    574578            ASMAtomicWriteU32(&pVCpu->idHostCpu, NIL_RTCPUID);
    575             /* fallthru, no break! */
     579            break;
     580        }
     581
    576582        default:
    577583            /* Invoke the HM-specific thread-context callback. */
     
    579585            break;
    580586    }
    581 
    582587}
    583588
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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