Changeset 15218 in vbox
- Timestamp:
- Dec 10, 2008 12:23:49 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 40632
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/HWACCM.cpp
r15217 r15218 244 244 "/PROF/HWACCM/CPU%d/SwitchFromGC_2", i); 245 245 AssertRC(rc); 246 # if 1 /* temporary for tracking down darwin holdup. */ 247 rc = STAMR3RegisterF(pVM, &pVCpu->hwaccm.s.StatExit2Sub1, STAMTYPE_PROFILE, STAMVISIBILITY_USED, STAMUNIT_TICKS_PER_CALL, "Temporary - I/O", 248 "/PROF/HWACCM/CPU%d/SwitchFromGC_2/Sub1", i); 249 AssertRC(rc); 250 rc = STAMR3RegisterF(pVM, &pVCpu->hwaccm.s.StatExit2Sub2, STAMTYPE_PROFILE, STAMVISIBILITY_USED, STAMUNIT_TICKS_PER_CALL, "Temporary - CRx RWs", 251 "/PROF/HWACCM/CPU%d/SwitchFromGC_2/Sub2", i); 252 AssertRC(rc); 253 rc = STAMR3RegisterF(pVM, &pVCpu->hwaccm.s.StatExit2Sub3, STAMTYPE_PROFILE, STAMVISIBILITY_USED, STAMUNIT_TICKS_PER_CALL, "Temporary - Exceptions", 254 "/PROF/HWACCM/CPU%d/SwitchFromGC_2/Sub3", i); 255 AssertRC(rc); 256 # endif 246 257 rc = STAMR3RegisterF(pVM, &pVCpu->hwaccm.s.StatInGC, STAMTYPE_PROFILE, STAMVISIBILITY_USED, STAMUNIT_TICKS_PER_CALL, "Profiling of vmlaunch", 247 258 "/PROF/HWACCM/CPU%d/InGC", i); 248 259 AssertRC(rc); 249 260 250 # define HWACCM_REG_COUNTER(a, b) \261 # define HWACCM_REG_COUNTER(a, b) \ 251 262 rc = STAMR3RegisterF(pVM, a, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Profiling of vmlaunch", b, i); \ 252 263 AssertRC(rc); -
trunk/src/VBox/VMM/HWACCMInternal.h
r15197 r15218 481 481 STAMPROFILEADV StatExit1; 482 482 STAMPROFILEADV StatExit2; 483 #if 1 /* temporary for tracking down darwin issues. */ 484 STAMPROFILEADV StatExit2Sub1; 485 STAMPROFILEADV StatExit2Sub2; 486 STAMPROFILEADV StatExit2Sub3; 487 #endif 483 488 STAMPROFILEADV StatInGC; 484 489 -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r15211 r15218 2159 2159 break; 2160 2160 } 2161 STAM_PROFILE_ADV_START(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2161 2162 switch (VMX_EXIT_INTERRUPTION_INFO_TYPE(intInfo)) 2162 2163 { … … 2194 2195 pVCpu->hwaccm.s.fContextUseFlags |= HWACCM_CHANGED_GUEST_CR0; 2195 2196 2197 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2196 2198 goto ResumeExecution; 2197 2199 } … … 2201 2203 rc = VMXR0InjectEvent(pVM, pVCpu, pCtx, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(intInfo), cbInstr, 0); 2202 2204 AssertRC(rc); 2205 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2203 2206 goto ResumeExecution; 2204 2207 } … … 2222 2225 AssertRC(rc); 2223 2226 2227 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2224 2228 goto ResumeExecution; 2225 2229 } … … 2243 2247 TRPMResetTrap(pVM); 2244 2248 2249 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2245 2250 goto ResumeExecution; 2246 2251 } … … 2263 2268 AssertRC(rc); 2264 2269 2270 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2265 2271 goto ResumeExecution; 2266 2272 } … … 2288 2294 AssertRC(rc); 2289 2295 2296 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2290 2297 goto ResumeExecution; 2291 2298 } … … 2335 2342 AssertRC(rc); 2336 2343 2344 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2337 2345 goto ResumeExecution; 2338 2346 } … … 2352 2360 rc = VMXR0InjectEvent(pVM, pVCpu, pCtx, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(intInfo), cbInstr, errCode); 2353 2361 AssertRC(rc); 2362 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2354 2363 goto ResumeExecution; 2355 2364 } … … 2367 2376 2368 2377 /* Only resume if successful. */ 2378 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2369 2379 goto ResumeExecution; 2370 2380 } … … 2399 2409 AssertRC(rc); 2400 2410 2411 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2401 2412 goto ResumeExecution; 2402 2413 } … … 2415 2426 break; 2416 2427 2428 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2417 2429 goto ResumeExecution; 2418 2430 } … … 2431 2443 } 2432 2444 2445 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub3, y3); 2433 2446 break; 2434 2447 } … … 2587 2600 case VMX_EXIT_CRX_MOVE: /* 28 Control-register accesses. */ 2588 2601 { 2602 STAM_PROFILE_ADV_START(&pVCpu->hwaccm.s.StatExit2Sub2, y2); 2603 2589 2604 switch (VMX_EXIT_QUALIFICATION_CRX_ACCESS(exitQualification)) 2590 2605 { … … 2664 2679 { 2665 2680 /* Only resume if successful. */ 2681 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub2, y2); 2666 2682 goto ResumeExecution; 2667 2683 } 2668 2684 Assert(rc == VERR_EM_INTERPRETER || rc == VINF_PGM_CHANGE_MODE || rc == VINF_PGM_SYNC_CR3); 2685 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub2, y2); 2669 2686 break; 2670 2687 } … … 2729 2746 case VMX_EXIT_PORT_IO: /* 30 I/O instruction. */ 2730 2747 { 2748 STAM_PROFILE_ADV_START(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2731 2749 uint32_t uIOWidth = VMX_EXIT_QUALIFICATION_IO_WIDTH(exitQualification); 2732 2750 uint32_t uPort; … … 2745 2763 { 2746 2764 rc = fIOWrite ? VINF_IOM_HC_IOPORT_WRITE : VINF_IOM_HC_IOPORT_READ; 2765 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2747 2766 break; 2748 2767 } … … 2861 2880 AssertRC(rc); 2862 2881 2882 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2863 2883 goto ResumeExecution; 2864 2884 } … … 2866 2886 } 2867 2887 2888 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2868 2889 goto ResumeExecution; 2869 2890 } 2891 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2870 2892 break; 2871 2893 } … … 2879 2901 AssertMsg(RT_FAILURE(rc) || rc == VINF_EM_RAW_EMULATE_INSTR || rc == VINF_EM_RAW_GUEST_TRAP || rc == VINF_TRPM_XCPT_DISPATCHED, ("%Rrc\n", rc)); 2880 2902 #endif 2903 STAM_PROFILE_ADV_STOP(&pVCpu->hwaccm.s.StatExit2Sub1, y1); 2881 2904 break; 2882 2905 }
Note:
See TracChangeset
for help on using the changeset viewer.