Changeset 13858 in vbox
- Timestamp:
- Nov 5, 2008 1:45:41 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 38855
- Location:
- trunk
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/em.h
r13832 r13858 172 172 VMMR3DECL(int) EMR3TermCPU(PVM pVM); 173 173 VMMR3DECL(DECLNORETURN(void)) EMR3FatalError(PVM pVM, int rc); 174 VMMR3DECL(int) EMR3ExecuteVM(PVM pVM );174 VMMR3DECL(int) EMR3ExecuteVM(PVM pVM, RTCPUID idCpu); 175 175 VMMR3DECL(int) EMR3CheckRawForcedActions(PVM pVM); 176 176 VMMR3DECL(int) EMR3Interpret(PVM pVM); -
trunk/include/VBox/sup.h
r13458 r13858 441 441 * @param pVMR0 The ring-0 VM handle. 442 442 * @param uOperation The operation; only the SUP_VMMR0_DO_* ones are valid. 443 */ 444 SUPR3DECL(int) SUPCallVMMR0Fast(PVMR0 pVMR0, unsigned uOperation); 443 * @param idCPU VMCPU id. 444 */ 445 SUPR3DECL(int) SUPCallVMMR0Fast(PVMR0 pVMR0, unsigned uOperation, unsigned idCPU); 445 446 446 447 /** -
trunk/include/VBox/uvm.h
r13796 r13858 44 44 PUVM pUVM; 45 45 /** The virtual CPU ID. */ 46 RTCPUID idC PU;46 RTCPUID idCpu; 47 47 48 48 /** The VM internal data. */ -
trunk/include/VBox/vmm.h
r13832 r13858 135 135 VMMR3DECL(int) VMMR3DisableSwitcher(PVM pVM); 136 136 VMMR3DECL(int) VMMR3RawRunGC(PVM pVM); 137 VMMR3DECL(int) VMMR3HwAccRunGC(PVM pVM );137 VMMR3DECL(int) VMMR3HwAccRunGC(PVM pVM, RTCPUID idCpu); 138 138 VMMR3DECL(int) VMMR3CallRC(PVM pVM, RTRCPTR RCPtrEntry, unsigned cArgs, ...); 139 139 VMMR3DECL(int) VMMR3CallRCV(PVM pVM, RTRCPTR RCPtrEntry, unsigned cArgs, va_list args); … … 277 277 278 278 VMMR0DECL(int) VMMR0EntryInt(PVM pVM, VMMR0OPERATION enmOperation, void *pvArg); 279 VMMR0DECL(void) VMMR0EntryFast(PVM pVM, VMMR0OPERATION enmOperation);279 VMMR0DECL(void) VMMR0EntryFast(PVM pVM, unsigned idCPU, VMMR0OPERATION enmOperation); 280 280 VMMR0DECL(int) VMMR0EntryEx(PVM pVM, VMMR0OPERATION enmOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION); 281 281 VMMR0DECL(int) VMMR0CallHost(PVM pVM, VMMCALLHOST enmOperation, uint64_t uArg); -
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r13839 r13858 155 155 #ifdef RT_WITH_W64_UNWIND_HACK 156 156 DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession); 157 DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned uOperation);157 DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned idCPU, unsigned uOperation); 158 158 DECLASM(void) supdrvNtWrapObjDestructor(PFNRT pfnDestruction, void *pvObj, void *pvUser1, void *pvUser2); 159 159 DECLASM(void *) supdrvNtWrapQueryFactoryInterface(PFNRT pfnQueryFactoryInterface, struct SUPDRVFACTORY const *pSupDrvFactory, PSUPDRVSESSION pSession, const char *pszInterfaceUuid); … … 861 861 * @returns VBox status code that should be passed down to ring-3 unchanged. 862 862 * @param uIOCtl Function number. 863 * @param idCPU VMCPU id. 863 864 * @param pDevExt Device extention. 864 865 * @param pSession Session data. 865 866 */ 866 int VBOXCALL supdrvIOCtlFast(uintptr_t uIOCtl, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession)867 int VBOXCALL supdrvIOCtlFast(uintptr_t uIOCtl, unsigned idCPU, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession) 867 868 { 868 869 /* … … 875 876 case SUP_IOCTL_FAST_DO_RAW_RUN: 876 877 #ifdef RT_WITH_W64_UNWIND_HACK 877 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, SUP_VMMR0_DO_RAW_RUN);878 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCPU, SUP_VMMR0_DO_RAW_RUN); 878 879 #else 879 pDevExt->pfnVMMR0EntryFast(pSession->pVM, SUP_VMMR0_DO_RAW_RUN);880 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCPU, SUP_VMMR0_DO_RAW_RUN); 880 881 #endif 881 882 break; 882 883 case SUP_IOCTL_FAST_DO_HWACC_RUN: 883 884 #ifdef RT_WITH_W64_UNWIND_HACK 884 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, SUP_VMMR0_DO_HWACC_RUN);885 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCPU, SUP_VMMR0_DO_HWACC_RUN); 885 886 #else 886 pDevExt->pfnVMMR0EntryFast(pSession->pVM, SUP_VMMR0_DO_HWACC_RUN);887 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCPU, SUP_VMMR0_DO_HWACC_RUN); 887 888 #endif 888 889 break; 889 890 case SUP_IOCTL_FAST_DO_NOP: 890 891 #ifdef RT_WITH_W64_UNWIND_HACK 891 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, SUP_VMMR0_DO_NOP);892 supdrvNtWrapVMMR0EntryFast((PFNRT)pDevExt->pfnVMMR0EntryFast, pSession->pVM, idCPU, SUP_VMMR0_DO_NOP); 892 893 #else 893 pDevExt->pfnVMMR0EntryFast(pSession->pVM, SUP_VMMR0_DO_NOP);894 pDevExt->pfnVMMR0EntryFast(pSession->pVM, idCPU, SUP_VMMR0_DO_NOP); 894 895 #endif 895 896 break; -
trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
r13479 r13858 182 182 * The upper 16-bit is the major version, the the lower the minor version. 183 183 * When incompatible changes are made, the upper major number has to be changed. */ 184 #define SUPDRV_IOC_VERSION 0x000 90001184 #define SUPDRV_IOC_VERSION 0x000A0000 185 185 186 186 /** SUP_IOCTL_COOKIE. */ -
trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h
r13494 r13858 647 647 DECLR0CALLBACKMEMBER(int, pfnVMMR0EntryInt, (PVM pVM, unsigned uOperation, void *pvArg)); 648 648 /** VMMR0EntryFast() pointer. */ 649 DECLR0CALLBACKMEMBER(void, pfnVMMR0EntryFast, (PVM pVM, unsigned uOperation));649 DECLR0CALLBACKMEMBER(void, pfnVMMR0EntryFast, (PVM pVM, unsigned idCPU, unsigned uOperation)); 650 650 /** VMMR0EntryEx() pointer. */ 651 651 DECLR0CALLBACKMEMBER(int, pfnVMMR0EntryEx, (PVM pVM, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession)); … … 703 703 *******************************************************************************/ 704 704 int VBOXCALL supdrvIOCtl(uintptr_t uIOCtl, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession, PSUPREQHDR pReqHdr); 705 int VBOXCALL supdrvIOCtlFast(uintptr_t uIOCtl, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession);705 int VBOXCALL supdrvIOCtlFast(uintptr_t uIOCtl, unsigned idCPU, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession); 706 706 int VBOXCALL supdrvIDC(uintptr_t uIOCtl, PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession, PSUPDRVIDCREQHDR pReqHdr); 707 707 int VBOXCALL supdrvInitDevExt(PSUPDRVDEVEXT pDevExt); -
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r13837 r13858 565 565 566 566 567 SUPR3DECL(int) SUPCallVMMR0Fast(PVMR0 pVMR0, unsigned uOperation )567 SUPR3DECL(int) SUPCallVMMR0Fast(PVMR0 pVMR0, unsigned uOperation, unsigned idCPU) 568 568 { 569 569 if (RT_LIKELY(uOperation == SUP_VMMR0_DO_RAW_RUN)) 570 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_RAW_RUN );570 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_RAW_RUN, idCPU); 571 571 if (RT_LIKELY(uOperation == SUP_VMMR0_DO_HWACC_RUN)) 572 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_HWACC_RUN );572 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_HWACC_RUN, idCPU); 573 573 if (RT_LIKELY(uOperation == SUP_VMMR0_DO_NOP)) 574 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_NOP );574 return suplibOsIOCtlFast(&g_supLibData, SUP_IOCTL_FAST_DO_NOP, idCPU); 575 575 576 576 AssertMsgFailed(("%#x\n", uOperation)); -
trunk/src/VBox/HostDrivers/Support/SUPLibInternal.h
r13458 r13858 251 251 int suplibOsTerm(PSUPLIBDATA pThis); 252 252 int suplibOsIOCtl(PSUPLIBDATA pThis, uintptr_t uFunction, void *pvReq, size_t cbReq); 253 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction );253 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCPU); 254 254 int suplibOsPageAlloc(PSUPLIBDATA pThis, size_t cPages, void **ppvPages); 255 255 int suplibOsPageFree(PSUPLIBDATA pThis, void *pvPages, size_t cPages); -
trunk/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
r13837 r13858 271 271 272 272 273 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )273 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 274 274 { 275 275 int rc = ioctl(pThis->hDevice, uFunction, NULL); -
trunk/src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp
r13837 r13858 167 167 168 168 169 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )169 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 170 170 { 171 171 int rc = ioctl(pThis->hDevice, uFunction, NULL); -
trunk/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
r13837 r13858 202 202 203 203 204 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )204 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 205 205 { 206 206 int rc = ioctl(pThis->hDevice, uFunction, NULL); -
trunk/src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp
r13837 r13858 153 153 154 154 155 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )155 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 156 156 { 157 157 int32_t rcRet = VERR_INTERNAL_ERROR; -
trunk/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp
r13837 r13858 160 160 161 161 162 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )162 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 163 163 { 164 164 int rc = ioctl(pThis->hDevice, uFunction, NULL); -
trunk/src/VBox/HostDrivers/Support/testcase/tstInt.cpp
r13837 r13858 144 144 { 145 145 uint64_t OneStartTick = ASMReadTSC(); 146 rc = SUPCallVMMR0Fast(pVMR0, VMMR0_DO_NOP );146 rc = SUPCallVMMR0Fast(pVMR0, VMMR0_DO_NOP, 0); 147 147 uint64_t Ticks = ASMReadTSC() - OneStartTick; 148 148 if (Ticks < MinTicks) -
trunk/src/VBox/HostDrivers/Support/win/SUPDrv-win.cpp
r13529 r13858 326 326 KIRQL oldIrql; 327 327 KeRaiseIrql(DISPATCH_LEVEL, &oldIrql); 328 int rc = supdrvIOCtlFast(ulCmd, pDevExt, pSession);328 int rc = supdrvIOCtlFast(ulCmd, (unsigned)pIrp->UserBuffer /* VMCPU id */, pDevExt, pSession); 329 329 KeLowerIrql(oldIrql); 330 330 -
trunk/src/VBox/HostDrivers/Support/win/SUPDrvA-win.asm
r13536 r13858 193 193 194 194 ;; 195 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned uOperation);195 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned idCPU, unsigned uOperation); 196 196 ; 197 197 ; @param pfnVMMR0EntryFast rcx 198 198 ; @param pVM rdx 199 ; @param uOperation r8 199 ; @param idCPU r8 200 ; @param uOperation r9 200 201 ; 201 202 BEGINPROC supdrvNtWrapVMMR0EntryFast … … 206 207 mov rcx, rdx 207 208 mov rdx, r8 209 mov r8, r9 208 210 call rax 209 211 -
trunk/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp
r13835 r13858 504 504 505 505 506 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction )506 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, unsigned idCpu) 507 507 { 508 508 /* … … 510 510 */ 511 511 DWORD cbReturned = 0; 512 if (DeviceIoControl((HANDLE)pThis->hDevice, uFunction, NULL, 0, NULL, 0, &cbReturned, NULL))512 if (DeviceIoControl((HANDLE)pThis->hDevice, uFunction, NULL, 0, (LPVOID)idCpu, 0, &cbReturned, NULL)) 513 513 return VINF_SUCCESS; 514 514 return suplibConvertWin32Err(GetLastError()); -
trunk/src/VBox/VMM/EM.cpp
r13826 r13858 1058 1058 * @returns VBox status code. 1059 1059 * @param pVM The VM handle. 1060 */ 1061 static int emR3HwAccStep(PVM pVM) 1060 * @param idCpu VMCPU id. 1061 */ 1062 static int emR3HwAccStep(PVM pVM, RTCPUID idCpu) 1062 1063 { 1063 1064 Assert(pVM->em.s.enmState == EMSTATE_DEBUG_GUEST_HWACC); … … 1087 1088 do 1088 1089 { 1089 rc = VMMR3HwAccRunGC(pVM );1090 rc = VMMR3HwAccRunGC(pVM, idCpu); 1090 1091 } while ( rc == VINF_SUCCESS 1091 1092 || rc == VINF_EM_RAW_INTERRUPT); … … 1127 1128 1128 1129 1129 void emR3SingleStepExecHwAcc(PVM pVM, uint32_t cIterations)1130 void emR3SingleStepExecHwAcc(PVM pVM, RTCPUID idCpu, uint32_t cIterations) 1130 1131 { 1131 1132 EMSTATE enmOldState = pVM->em.s.enmState; … … 1138 1139 DBGFR3PrgStep(pVM); 1139 1140 DBGFR3DisasInstrCurrentLog(pVM, "RSS: "); 1140 emR3HwAccStep(pVM );1141 emR3HwAccStep(pVM, idCpu); 1141 1142 } 1142 1143 Log(("Single step END:\n")); … … 2761 2762 * 2762 2763 * @param pVM VM handle. 2764 * @param idCpu VMCPU id. 2763 2765 * @param pfFFDone Where to store an indicator telling whether or not 2764 2766 * FFs were done before returning. 2765 2767 */ 2766 static int emR3HwAccExecute(PVM pVM, bool *pfFFDone)2768 static int emR3HwAccExecute(PVM pVM, RTCPUID idCpu, bool *pfFFDone) 2767 2769 { 2768 2770 int rc = VERR_INTERNAL_ERROR; 2769 2771 PCPUMCTX pCtx = pVM->em.s.pCtx; 2770 2772 2771 LogFlow(("emR3HwAccExecute : (cs:eip=%04x:%RGv)\n", pCtx->cs, (RTGCPTR)pCtx->rip));2773 LogFlow(("emR3HwAccExecute%d: (cs:eip=%04x:%RGv)\n", idCpu, pCtx->cs, (RTGCPTR)pCtx->rip)); 2772 2774 *pfFFDone = false; 2773 2775 … … 2818 2820 STAM_PROFILE_START(&pVM->em.s.StatHwAccExec, x); 2819 2821 VMMR3Unlock(pVM); 2820 rc = VMMR3HwAccRunGC(pVM );2822 rc = VMMR3HwAccRunGC(pVM, idCpu); 2821 2823 VMMR3Lock(pVM); 2822 2824 STAM_PROFILE_STOP(&pVM->em.s.StatHwAccExec, x); … … 3297 3299 * @returns VBox status code, informational status codes may indicate failure. 3298 3300 * @param pVM The VM to operate on. 3299 */ 3300 VMMR3DECL(int) EMR3ExecuteVM(PVM pVM) 3301 * @param idCpu VMCPU id. 3302 */ 3303 VMMR3DECL(int) EMR3ExecuteVM(PVM pVM, RTCPUID idCpu) 3301 3304 { 3302 3305 LogFlow(("EMR3ExecuteVM: pVM=%p enmVMState=%d enmState=%d (%s) fForceRAW=%d\n", pVM, pVM->enmVMState, … … 3544 3547 */ 3545 3548 case EMSTATE_HWACC: 3546 rc = emR3HwAccExecute(pVM, &fFFDone);3549 rc = emR3HwAccExecute(pVM, idCpu, &fFFDone); 3547 3550 break; 3548 3551 -
trunk/src/VBox/VMM/VM.cpp
r13823 r13858 401 401 { 402 402 pUVM->aCpus[i].pUVM = pUVM; 403 pUVM->aCpus[i].idC PU= i;403 pUVM->aCpus[i].idCpu = i; 404 404 } 405 405 … … 3190 3190 3191 3191 AssertMsg(pUVMCPU, ("RTTlsGet %d failed!\n", pVM->pUVM->vm.s.idxTLS)); 3192 return pUVMCPU->idC PU;3192 return pUVMCPU->idCpu; 3193 3193 } 3194 3194 -
trunk/src/VBox/VMM/VMEmt.cpp
r13818 r13858 56 56 PUVMCPU pUVMCPU = (PUVMCPU)pvArgs; 57 57 PUVM pUVM = pUVMCPU->pUVM; 58 RTCPUID idC PU = pUVMCPU->idCPU;58 RTCPUID idCpu = pUVMCPU->idCpu; 59 59 int rc; 60 60 … … 184 184 { 185 185 PVM pVM = pUVM->pVM; 186 rc = EMR3ExecuteVM(pVM );186 rc = EMR3ExecuteVM(pVM, idCpu); 187 187 Log(("vmR3EmulationThread: EMR3ExecuteVM() -> rc=%Rrc, enmVMState=%d\n", rc, pVM->enmVMState)); 188 188 if ( EMGetState(pVM) == EMSTATE_GURU_MEDITATION -
trunk/src/VBox/VMM/VMM.cpp
r13823 r13858 1070 1070 rc = VERR_GENERAL_FAILURE; 1071 1071 #else 1072 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );1072 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 1073 1073 if (RT_LIKELY(rc == VINF_SUCCESS)) 1074 1074 rc = pVM->vmm.s.iLastGZRc; … … 1107 1107 * 1108 1108 * @param pVM VM handle. 1109 */ 1110 VMMR3DECL(int) VMMR3HwAccRunGC(PVM pVM) 1109 * @param idCpu VMCPU id. 1110 */ 1111 VMMR3DECL(int) VMMR3HwAccRunGC(PVM pVM, RTCPUID idCpu) 1111 1112 { 1112 1113 Log2(("VMMR3HwAccRunGC: (cs:eip=%04x:%08x)\n", CPUMGetGuestCS(pVM), CPUMGetGuestEIP(pVM))); … … 1120 1121 rc = VERR_GENERAL_FAILURE; 1121 1122 #else 1122 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_HWACC_RUN );1123 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_HWACC_RUN, idCpu); 1123 1124 if (RT_LIKELY(rc == VINF_SUCCESS)) 1124 1125 rc = pVM->vmm.s.iLastGZRc; … … 1204 1205 rc = VERR_GENERAL_FAILURE; 1205 1206 #else 1206 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );1207 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 1207 1208 if (RT_LIKELY(rc == VINF_SUCCESS)) 1208 1209 rc = pVM->vmm.s.iLastGZRc; … … 1260 1261 rc = VERR_GENERAL_FAILURE; 1261 1262 #else 1262 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );1263 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 1263 1264 if (RT_LIKELY(rc == VINF_SUCCESS)) 1264 1265 rc = pVM->vmm.s.iLastGZRc; -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r13818 r13858 566 566 * @param pVM The VM to operate on. 567 567 * The return code is stored in pVM->vmm.s.iLastGZRc. 568 * @param idCPU VMCPU id. 568 569 * @param enmOperation Which operation to execute. 569 570 * @remarks Assume called with interrupts _enabled_. 570 571 */ 571 VMMR0DECL(void) VMMR0EntryFast(PVM pVM, VMMR0OPERATION enmOperation)572 VMMR0DECL(void) VMMR0EntryFast(PVM pVM, unsigned idCPU, VMMR0OPERATION enmOperation) 572 573 { 573 574 switch (enmOperation) … … 620 621 621 622 STAM_COUNTER_INC(&pVM->vmm.s.StatRunRC); 623 624 if (idCPU >= pVM->cCPUs) 625 { 626 pVM->vmm.s.iLastGZRc = VERR_INVALID_PARAMETER; 627 return; 628 } 622 629 623 630 #ifndef RT_OS_WINDOWS /** @todo check other hosts */ -
trunk/src/VBox/VMM/VMMTests.cpp
r13830 r13858 70 70 CPUMPushHyper(pVM, RCPtrEP); /* what to call */ 71 71 CPUMSetHyperEIP(pVM, pVM->vmm.s.pfnCallTrampolineRC); 72 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );72 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 73 73 if (RT_LIKELY(rc == VINF_SUCCESS)) 74 74 rc = pVM->vmm.s.iLastGZRc; … … 107 107 CPUMPushHyper(pVM, RCPtrEP); /* what to call */ 108 108 CPUMSetHyperEIP(pVM, pVM->vmm.s.pfnCallTrampolineRC); 109 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );109 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 110 110 if (RT_LIKELY(rc == VINF_SUCCESS)) 111 111 rc = pVM->vmm.s.iLastGZRc; … … 352 352 do 353 353 { 354 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );354 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 355 355 if (RT_LIKELY(rc == VINF_SUCCESS)) 356 356 rc = pVM->vmm.s.iLastGZRc; … … 405 405 406 406 uint64_t TickThisStart = ASMReadTSC(); 407 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN );407 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_RAW_RUN, 0); 408 408 if (RT_LIKELY(rc == VINF_SUCCESS)) 409 409 rc = pVM->vmm.s.iLastGZRc; … … 542 542 543 543 uint64_t TickThisStart = ASMReadTSC(); 544 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_HWACC_RUN );544 rc = SUPCallVMMR0Fast(pVM->pVMR0, VMMR0_DO_HWACC_RUN, 0); 545 545 uint64_t TickThisElapsed = ASMReadTSC() - TickThisStart; 546 546 if (RT_FAILURE(rc)) -
trunk/src/VBox/VMM/VMReq.cpp
r13818 r13858 629 629 { 630 630 if ( !pUVMCPU 631 || pUVMCPU->idC PU!= i)631 || pUVMCPU->idCpu != i) 632 632 { 633 633 /* … … 671 671 else 672 672 if ( pReq->enmDest != VMREQDEST_ANY /* for a specific VMCPU? */ 673 && pUVMCPU->idC PU!= (unsigned)pReq->enmDest)673 && pUVMCPU->idCpu != (unsigned)pReq->enmDest) 674 674 { 675 675 RTCPUID idTarget = (RTCPUID)pReq->enmDest;
Note:
See TracChangeset
for help on using the changeset viewer.