Changeset 13858 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Nov 5, 2008 1:45:41 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 38855
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
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.