- Timestamp:
- May 23, 2007 2:48:38 PM (18 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/HWACCM.cpp
r2797 r2811 302 302 if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT) 303 303 LogRel(("HWACCM: VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT\n")); 304 val = pVM->hwaccm.s.vmx.msr.vmx_pin_ctls; 305 if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_EXT_INT_EXIT) 306 LogRel(("HWACCM: VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_EXT_INT_EXIT *must* be set\n")); 307 if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT) 308 LogRel(("HWACCM: VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT *must* be set\n")); 304 309 305 310 LogRel(("HWACCM: MSR_IA32_VMX_PROCBASED_CTLS = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_proc_ctls)); … … 337 342 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT) 338 343 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT\n")); 344 val = pVM->hwaccm.s.vmx.msr.vmx_proc_ctls; 345 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT) 346 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT *must* be set\n")); 347 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_TSC_OFFSET) 348 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_TSC_OFFSET *must* be set\n")); 349 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_HLT_EXIT) 350 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_HLT_EXIT *must* be set\n")); 351 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_INVLPG_EXIT) 352 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_INVLPG_EXIT *must* be set\n")); 353 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MWAIT_EXIT) 354 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MWAIT_EXIT *must* be set\n")); 355 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDPMC_EXIT) 356 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDPMC_EXIT *must* be set\n")); 357 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT) 358 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT *must* be set\n")); 359 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_LOAD_EXIT) 360 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_LOAD_EXIT *must* be set\n")); 361 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_STORE_EXIT) 362 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_STORE_EXIT *must* be set\n")); 363 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW) 364 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW *must* be set\n")); 365 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT) 366 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT *must* be set\n")); 367 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_UNCOND_IO_EXIT) 368 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_UNCOND_IO_EXIT *must* be set\n")); 369 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_IO_BITMAPS) 370 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_IO_BITMAPS *must* be set\n")); 371 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_MSR_BITMAPS) 372 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_MSR_BITMAPS *must* be set\n")); 373 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_EXIT) 374 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_EXIT *must* be set\n")); 375 if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT) 376 LogRel(("HWACCM: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT *must* be set\n")); 339 377 340 378 LogRel(("HWACCM: MSR_IA32_VMX_ENTRY_CTLS = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_entry)); … … 346 384 if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON) 347 385 LogRel(("HWACCM: VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON\n")); 386 val = pVM->hwaccm.s.vmx.msr.vmx_entry; 387 if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_IA64_MODE) 388 LogRel(("HWACCM: VMX_VMCS_CTRL_ENTRY_CONTROLS_IA64_MODE *must* be set\n")); 389 if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_ENTRY_SMM) 390 LogRel(("HWACCM: VMX_VMCS_CTRL_ENTRY_CONTROLS_ENTRY_SMM *must* be set\n")); 391 if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON) 392 LogRel(("HWACCM: VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON *must* be set\n")); 348 393 349 394 LogRel(("HWACCM: MSR_IA32_VMX_EXIT_CTLS = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_exit)); … … 353 398 if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ) 354 399 LogRel(("HWACCM: VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ\n")); 400 val = pVM->hwaccm.s.vmx.msr.vmx_exit; 401 if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_AMD64) 402 LogRel(("HWACCM: VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_AMD64 *must* be set\n")); 403 if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ) 404 LogRel(("HWACCM: VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ *must* be set\n")); 355 405 356 406 LogRel(("HWACCM: MSR_IA32_VMX_MISC = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_misc)); -
trunk/src/VBox/VMM/HWACCMInternal.h
r2699 r2811 297 297 #ifdef VBOX_STRICT 298 298 HWACCMR0DECL(void) HWACCMDumpRegs(PCPUMCTX pCtx); 299 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(P VBOXDESC Desc, RTSEL Sel, const char *pszMsg);299 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC Desc, RTSEL Sel, const char *pszMsg); 300 300 #else 301 301 #define HWACCMDumpRegs(a) do { } while (0) -
trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp
r1283 r2811 315 315 * @param pszMsg Message to prepend the log entry with. 316 316 */ 317 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(P VBOXDESCDesc, RTSEL Sel, const char *pszMsg)317 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC Desc, RTSEL Sel, const char *pszMsg) 318 318 { 319 319 /* … … 327 327 { 328 328 #define STRENTRY(str) { sizeof(str) - 1, str } 329 329 330 /* system */ 331 #if HC_ARCH_BITS == 64 332 STRENTRY("Reserved0 "), /* 0x00 */ 333 STRENTRY("Reserved1 "), /* 0x01 */ 334 STRENTRY("LDT "), /* 0x02 */ 335 STRENTRY("Reserved3 "), /* 0x03 */ 336 STRENTRY("Reserved4 "), /* 0x04 */ 337 STRENTRY("Reserved5 "), /* 0x05 */ 338 STRENTRY("Reserved6 "), /* 0x06 */ 339 STRENTRY("Reserved7 "), /* 0x07 */ 340 STRENTRY("Reserved8 "), /* 0x08 */ 341 STRENTRY("TSS64Avail "), /* 0x09 */ 342 STRENTRY("ReservedA "), /* 0x0a */ 343 STRENTRY("TSS64Busy "), /* 0x0b */ 344 STRENTRY("Call64 "), /* 0x0c */ 345 STRENTRY("ReservedD "), /* 0x0d */ 346 STRENTRY("Int64 "), /* 0x0e */ 347 STRENTRY("Trap64 "), /* 0x0f */ 348 #else 330 349 STRENTRY("Reserved0 "), /* 0x00 */ 331 350 STRENTRY("TSS16Avail "), /* 0x01 */ … … 344 363 STRENTRY("Int32 "), /* 0x0e */ 345 364 STRENTRY("Trap32 "), /* 0x0f */ 365 #endif 346 366 /* non system */ 347 367 STRENTRY("DataRO "), /* 0x10 */ … … 374 394 else 375 395 ADD_STR(psz, "Not-Present "); 396 #if HC_ARCH_BITS == 64 397 if (Desc->Gen.u1Long) 398 ADD_STR(psz, "64-bit "); 399 else 400 ADD_STR(psz, "Comp "); 401 #else 376 402 if (Desc->Gen.u1Granularity) 377 403 ADD_STR(psz, "Page "); … … 380 406 else 381 407 ADD_STR(psz, "16-bit "); 408 #endif 382 409 #undef ADD_STR 383 410 *psz = '\0'; … … 389 416 if (Desc->Gen.u1Granularity) 390 417 u32Limit = u32Limit << PAGE_SHIFT | PAGE_OFFSET_MASK; 418 419 #if HC_ARCH_BITS == 64 420 uint64_t u32Base = Desc->Gen.u32BaseHigh3 << 32 | Desc->Gen.u8BaseHigh2 << 24 | Desc->Gen.u8BaseHigh1 << 16 | Desc->Gen.u16BaseLow; 421 422 Log(("%s %04x - %08x %08x - base=%VX64 limit=%08x dpl=%d %s\n", pszMsg, 423 Sel, Desc->au32[0], Desc->au32[1], u32Base, u32Limit, Desc->Gen.u2Dpl, szMsg)); 424 #else 391 425 uint32_t u32Base = Desc->Gen.u8BaseHigh2 << 24 | Desc->Gen.u8BaseHigh1 << 16 | Desc->Gen.u16BaseLow; 392 426 393 427 Log(("%s %04x - %08x %08x - base=%08x limit=%08x dpl=%d %s\n", pszMsg, 394 428 Sel, Desc->au32[0], Desc->au32[1], u32Base, u32Limit, Desc->Gen.u2Dpl, szMsg)); 429 #endif 395 430 } 396 431 -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r2800 r2811 442 442 if (pVM->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_HOST_CONTEXT) 443 443 { 444 RTIDTR idtr;445 RTGDTR gdtr;446 RTSEL SelTR;447 P VBOXDESCpDesc;448 uintptr_t trBase;444 RTIDTR idtr; 445 RTGDTR gdtr; 446 RTSEL SelTR; 447 PX86DESCHC pDesc; 448 uintptr_t trBase; 449 449 450 450 /* Control registers */ … … 494 494 } 495 495 496 pDesc = &((P VBOXDESC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT];496 pDesc = &((PX86DESCHC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT]; 497 497 trBase = pDesc->Gen.u16BaseLow | (pDesc->Gen.u8BaseHigh1 << 16) | (pDesc->Gen.u8BaseHigh2 << 24); 498 498 rc = VMXWriteVMCS(VMX_VMCS_HOST_TR_BASE, trBase); … … 979 979 STAM_PROFILE_ADV_START(&pVM->hwaccm.s.StatInGC, x); 980 980 if (pVM->hwaccm.s.vmx.fResumeVM == false) 981 {982 981 rc = VMXStartVM(pCtx); 983 }984 982 else 985 {986 983 rc = VMXResumeVM(pCtx); 987 }988 984 989 985 /* In case we execute a goto ResumeExecution later on. */ … … 1019 1015 if (rc1 == VINF_SUCCESS) 1020 1016 { 1021 RTGDTR gdtr;1022 P VBOXDESC pDesc;1017 RTGDTR gdtr; 1018 PX86DESCHC pDesc; 1023 1019 1024 1020 ASMGetGDTR(&gdtr); … … 1052 1048 if (val < gdtr.cbGdt) 1053 1049 { 1054 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1050 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1055 1051 HWACCMR0DumpDescriptor(pDesc, val, "CS: "); 1056 1052 } … … 1060 1056 if (val < gdtr.cbGdt) 1061 1057 { 1062 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1058 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1063 1059 HWACCMR0DumpDescriptor(pDesc, val, "DS: "); 1064 1060 } … … 1068 1064 if (val < gdtr.cbGdt) 1069 1065 { 1070 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1066 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1071 1067 HWACCMR0DumpDescriptor(pDesc, val, "ES: "); 1072 1068 } … … 1076 1072 if (val < gdtr.cbGdt) 1077 1073 { 1078 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1074 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1079 1075 HWACCMR0DumpDescriptor(pDesc, val, "FS: "); 1080 1076 } … … 1084 1080 if (val < gdtr.cbGdt) 1085 1081 { 1086 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1082 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1087 1083 HWACCMR0DumpDescriptor(pDesc, val, "GS: "); 1088 1084 } … … 1092 1088 if (val < gdtr.cbGdt) 1093 1089 { 1094 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1090 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1095 1091 HWACCMR0DumpDescriptor(pDesc, val, "SS: "); 1096 1092 } … … 1100 1096 if (val < gdtr.cbGdt) 1101 1097 { 1102 pDesc = &((P VBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];1098 pDesc = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT]; 1103 1099 HWACCMR0DumpDescriptor(pDesc, val, "TR: "); 1104 1100 }
Note:
See TracChangeset
for help on using the changeset viewer.