Changeset 20026 in vbox
- Timestamp:
- May 26, 2009 11:41:27 AM (16 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/HWACCM.cpp
r19908 r20026 619 619 Assert(!pVM->fHWACCMEnabled || VMMIsHwVirtExtForced(pVM)); 620 620 621 pVM->hwaccm.s.fHasIoApic = PDMHasIoApic(pVM); 622 621 623 if (pVM->hwaccm.s.vmx.fSupported) 622 624 { -
trunk/src/VBox/VMM/HWACCMInternal.h
r19992 r20026 205 205 bool fAllow64BitGuests; 206 206 207 /** Set if an IO-APIC is configured for this VM. */ 208 bool fHasIoApic; 209 207 210 /** Explicit alignment padding to make 32-bit gcc align u64RegisterMask 208 211 * naturally. */ 209 bool padding[ 2];212 bool padding[1]; 210 213 211 214 /** And mask for copying register contents. */ -
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r20001 r20026 1453 1453 Assert(!pVM->hwaccm.s.fNestedPaging); 1454 1454 1455 #if 0 1456 /* Shortcut for APIC TPR reads and writes; 32 bits guests only */ 1457 if ( (uFaultAddress & 0xfff) == 0x080 1458 && pVM->hwaccm.s.fHasIoApic 1459 && !(errCode & X86_TRAP_PF_P) /* not present */ 1460 && !CPUMIsGuestInLongModeEx(pCtx)) 1461 { 1462 RTGCPHYS GCPhysApicBase, GCPhys; 1463 PDMApicGetBase(pVM, &GCPhysApicBase); /* @todo cache this */ 1464 GCPhysApicBase &= PAGE_BASE_GC_MASK; 1465 1466 rc = PGMGstGetPage(pVCpu, (RTGCPTR)uFaultAddress, NULL, &GCPhys); 1467 if ( rc == VINF_SUCCESS 1468 && GCPhys == GCPhysApicBase) 1469 { 1470 Log(("Replace TPR access at %RGv\n", pCtx->rip)); 1471 1472 DISCPUSTATE Cpu; 1473 unsigned cbOp; 1474 rc = EMInterpretDisasOne(pVM, pVCpu, CPUMCTX2CORE(pCtx), &Cpu, &cbOp); 1475 AssertRC(rc); 1476 if ( rc == VINF_SUCCESS 1477 && Cpu.pCurInstr->opcode == OP_MOV 1478 && cbOp == 6) 1479 { 1480 if ( (errCode & X86_TRAP_PF_RW) 1481 && Cpu.param1.parval == uFaultAddress) 1482 { 1483 Log(("Acceptable write candidate!\n")); 1484 } 1485 else 1486 if (Cpu.param2.parval == uFaultAddress) 1487 { 1488 Log(("Acceptable read candidate!\n")); 1489 } 1490 } 1491 1492 } 1493 } 1494 #endif 1495 1455 1496 Log2(("Page fault at %RGv cr2=%RGv error code %x\n", (RTGCPTR)pCtx->rip, uFaultAddress, errCode)); 1456 1497 /* Exit qualification contains the linear address of the page fault. */ -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r20007 r20026 431 431 #endif /* HWACCM_VTX_WITH_VPID */ 432 432 433 if ( PDMHasIoApic(pVM))433 if (pVM->hwaccm.s.fHasIoApic) 434 434 val |= VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC; 435 435 … … 2017 2017 if ( CPUMIsGuestInLongModeEx(pCtx) 2018 2018 || ( (pVM->hwaccm.s.vmx.msr.vmx_proc_ctls2.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC) 2019 && PDMHasIoApic(pVM))2019 && pVM->hwaccm.s.fHasIoApic) 2020 2020 ) 2021 2021 {
Note:
See TracChangeset
for help on using the changeset viewer.