Changeset 19993 in vbox for trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
- Timestamp:
- May 25, 2009 12:12:06 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 47700
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r19992 r19993 2929 2929 { 2930 2930 errCode |= X86_TRAP_PF_P; 2931 2931 } 2932 2932 #if 0 2933 else { 2933 2934 /* Shortcut for APIC TPR reads and writes; 32 bits guests only */ 2934 2935 if ( (GCPhys & 0xfff) == 0x080 2935 && GCPhys > 0x1000000 /* to skip VGA frame buffer accesses */2936 && GCPhys > 0x1000000 /* to skip VGA frame buffer accesses */ 2936 2937 && !CPUMIsGuestInLongModeEx(pCtx) 2937 2938 && (pVM->hwaccm.s.vmx.msr.vmx_proc_ctls2.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC)) … … 2939 2940 RTGCPHYS GCPhysApicBase; 2940 2941 PDMApicGetBase(pVM, &GCPhysApicBase); /* @todo cache this */ 2942 GCPhysApicBase &= PAGE_BASE_GC_MASK; 2941 2943 if (GCPhys == GCPhysApicBase + 0x80) 2942 2944 { 2945 Log(("Enable VT-x virtual APIC access filtering\n")); 2943 2946 pVCpu->hwaccm.s.vmx.proc_ctls2 |= VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC; 2944 rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS2, val); 2947 rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS2, pVCpu->hwaccm.s.vmx.proc_ctls2); 2948 AssertRC(rc); 2949 2950 rc = IOMMMIOMapMMIOHCPage(pVM, GCPhysApicBase, pVM->hwaccm.s.vmx.pAPICPhys, X86_PTE_RW | X86_PTE_P); 2945 2951 AssertRC(rc); 2946 2952 } 2947 2953 } 2948 #endif 2949 } 2950 Log Flow(("EPT Page fault %x at %RGp error code %x\n", (uint32_t)exitQualification, GCPhys, errCode));2954 } 2955 #endif 2956 Log(("EPT Page fault %x at %RGp error code %x\n", (uint32_t)exitQualification, GCPhys, errCode)); 2951 2957 2952 2958 /* GCPhys contains the guest physical address of the page fault. */ … … 3409 3415 { 3410 3416 LogFlow(("VMX_EXIT_APIC_ACCESS\n")); 3411 3412 switch(VMX_EXIT_QUALIFICATION_APIC_ACCESS_TYPE(exitQualification)) 3417 unsigned uAccessType = VMX_EXIT_QUALIFICATION_APIC_ACCESS_TYPE(exitQualification); 3418 3419 switch(uAccessType) 3413 3420 { 3414 3421 case VMX_APIC_ACCESS_TYPE_LINEAR_READ: … … 3420 3427 3421 3428 Log(("Apic access at %RGp\n", GCPhys)); 3422 rc = VINF_EM_RAW_EMULATE_INSTR; 3429 rc = IOMMMIOPhysHandler(pVM, (uAccessType == VMX_APIC_ACCESS_TYPE_LINEAR_READ) ? 0 : X86_TRAP_PF_RW, CPUMCTX2CORE(pCtx), GCPhys); 3430 if (rc == VINF_SUCCESS) 3431 goto ResumeExecution; /* rip already updated */ 3432 3423 3433 break; 3424 3434 }
Note:
See TracChangeset
for help on using the changeset viewer.