Changeset 92525 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Nov 21, 2021 12:08:49 AM (3 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/NEMR3.cpp
r92444 r92525 393 393 switch ((NEMEXITTYPE)uExit) 394 394 { 395 case NEMEXITTYPE_INTTERRUPT_WINDOW: return "NEM interrupt window"; 396 case NEMEXITTYPE_HALT: return "NEM halt"; 397 395 398 case NEMEXITTYPE_UNRECOVERABLE_EXCEPTION: return "NEM unrecoverable exception"; 396 399 case NEMEXITTYPE_INVALID_VP_REGISTER_VALUE: return "NEM invalid vp register value"; 397 case NEMEXITTYPE_INTTERRUPT_WINDOW: return "NEM interrupt window";398 case NEMEXITTYPE_HALT: return "NEM halt";399 400 case NEMEXITTYPE_XCPT_UD: return "NEM #UD"; 400 401 case NEMEXITTYPE_XCPT_DB: return "NEM #DB"; … … 402 403 case NEMEXITTYPE_CANCELED: return "NEM canceled"; 403 404 case NEMEXITTYPE_MEMORY_ACCESS: return "NEM memory access"; 405 406 case NEMEXITTYPE_INTERNAL_ERROR_EMULATION: return "NEM emulation IPE"; 407 case NEMEXITTYPE_INTERNAL_ERROR_FATAL: return "NEM fatal IPE"; 408 case NEMEXITTYPE_INTERRUPTED: return "NEM interrupted"; 409 case NEMEXITTYPE_FAILED_ENTRY: return "NEM failed VT-x/AMD-V entry"; 410 411 case NEMEXITTYPE_INVALID: 412 case NEMEXITTYPE_END: 413 break; 404 414 } 405 415 -
trunk/src/VBox/VMM/VMMR3/NEMR3Native-linux.cpp
r92522 r92525 621 621 * 622 622 * The KVM_SET_CPUID2 call replaces any previous leaves, so we have to redo 623 * everything when there really just are single bit changes. 623 * everything when there really just are single bit changes. That said, it 624 * looks like KVM update the XCR/XSAVE related stuff as well as the APIC enabled 625 * bit(s), so it should suffice if we do this at startup, I hope. 624 626 */ 625 627 static int nemR3LnxUpdateCpuIdsLeaves(PVM pVM, PVMCPU pVCpu) … … 2066 2068 pRun->internal.suberror, pRun->internal.ndata, sizeof(pRun->internal.data), &pRun->internal.data[0])); 2067 2069 2068 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, KVM_EXIT_INTERNAL_ERROR),2069 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC());2070 2071 2070 /* 2072 2071 * Deal with each suberror, returning if we don't want IEM to handle it. … … 2076 2075 case KVM_INTERNAL_ERROR_EMULATION: 2077 2076 { 2077 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_INTERNAL_ERROR_EMULATION), 2078 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2078 2079 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitInternalErrorEmulation); 2079 2080 break; … … 2085 2086 default: 2086 2087 { 2088 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_INTERNAL_ERROR_FATAL), 2089 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2090 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitInternalErrorFatal); 2087 2091 const char *pszName; 2088 2092 switch (pRun->internal.suberror) … … 2094 2098 default: pszName = "unknown"; break; 2095 2099 } 2096 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitInternalErrorFatal);2097 2100 LogRel(("NEM: KVM_EXIT_INTERNAL_ERROR! suberror=%#x (%s) ndata=%u data=%.*Rhxs\n", pRun->internal.suberror, pszName, 2098 2101 pRun->internal.ndata, sizeof(pRun->internal.data), &pRun->internal.data[0])); … … 2268 2271 2269 2272 case KVM_EXIT_IRQ_WINDOW_OPEN: 2270 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, KVM_EXIT_IRQ_WINDOW_OPEN),2273 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_INTTERRUPT_WINDOW), 2271 2274 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2272 2275 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitIrqWindowOpen); … … 2296 2299 2297 2300 case KVM_EXIT_HLT: 2298 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, KVM_EXIT_HLT),2301 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_HALT), 2299 2302 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2300 2303 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitHalt); … … 2303 2306 2304 2307 case KVM_EXIT_INTR: /* EINTR */ 2305 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, KVM_EXIT_INTR),2308 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_INTERRUPTED), 2306 2309 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2307 2310 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatExitIntr); … … 2348 2351 LogRel(("NEM: KVM_EXIT_FAIL_ENTRY! hardware_entry_failure_reason=%#x cpu=%#x\n", 2349 2352 pRun->fail_entry.hardware_entry_failure_reason, pRun->fail_entry.cpu)); 2353 EMHistoryAddExit(pVCpu, EMEXIT_MAKE_FT(EMEXIT_F_KIND_NEM, NEMEXITTYPE_FAILED_ENTRY), 2354 pRun->s.regs.regs.rip + pRun->s.regs.sregs.cs.base, ASMReadTSC()); 2350 2355 return VERR_NEM_IPE_1; 2351 2356 … … 2556 2561 int rcLnx = ioctl(pVCpu->nem.s.fdVCpu, KVM_RUN, 0UL); 2557 2562 pRun->immediate_exit = 0; 2558 Log(("NEM/%u: Flushed stateful exit -> %d/%d exit_reason=%d\n", pVCpu->idCpu, rcLnx, errno, pRun->exit_reason)); 2563 Log(("NEM/%u: Flushed stateful exit -> %d/%d exit_reason=%d\n", pVCpu->idCpu, rcLnx, errno, pRun->exit_reason)); RT_NOREF(rcLnx); 2559 2564 STAM_REL_COUNTER_INC(&pVCpu->nem.s.StatFlushExitOnReturn); 2560 2565 }
Note:
See TracChangeset
for help on using the changeset viewer.