Changeset 45478 in vbox
- Timestamp:
- Apr 11, 2013 9:20:01 AM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 84926
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r45474 r45478 618 618 #define VMX_EXIT_RDTSCP 51 619 619 /** 52 VMX-preemption timer expired. The preemption timer counted down to zero. */ 620 #define VMX_EXIT_PREEMPT ION_TIMER52620 #define VMX_EXIT_PREEMPT_TIMER 52 621 621 /** 53 INVVPID. Guest software attempted to execute INVVPID. */ 622 622 #define VMX_EXIT_INVVPID 53 … … 1157 1157 #define VMX_VMCS32_GUEST_ACTIVITY_STATE 0x4826 1158 1158 #define VMX_VMCS32_GUEST_SYSENTER_CS 0x482A /**< MSR IA32_SYSENTER_CS */ 1159 #define VMX_VMCS32_GUEST_PREEMPT ION_TIMER_VALUE0x482E1159 #define VMX_VMCS32_GUEST_PREEMPT_TIMER_VALUE 0x482E 1160 1160 /** @} */ 1161 1161 -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r45475 r45478 250 250 static DECLCALLBACK(int) hmR0VmxExitEptMisconfig(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient); 251 251 static DECLCALLBACK(int) hmR0VmxExitRdtscp(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient); 252 static DECLCALLBACK(int) hmR0VmxExitPreempt ionTimer(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient);252 static DECLCALLBACK(int) hmR0VmxExitPreemptTimer(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient); 253 253 static DECLCALLBACK(int) hmR0VmxExitWbinvd(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient); 254 254 static DECLCALLBACK(int) hmR0VmxExitXsetbv(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient); … … 336 336 /* 50 VMX_EXIT_INVEPT */ hmR0VmxExitInjectXcptUD, 337 337 /* 51 VMX_EXIT_RDTSCP */ hmR0VmxExitRdtscp, 338 /* 52 VMX_EXIT_PREEMPT ION_TIMER */ hmR0VmxExitPreemptionTimer,338 /* 52 VMX_EXIT_PREEMPT_TIMER */ hmR0VmxExitPreemptTimer, 339 339 /* 53 VMX_EXIT_INVVPID */ hmR0VmxExitInjectXcptUD, 340 340 /* 54 VMX_EXIT_WBINVD */ hmR0VmxExitWbinvd, … … 2426 2426 Assert(!(u32TprThreshold & 0xfffffff0)); /* Bits 31:4 MBZ. */ 2427 2427 2428 Log(("Getting TPR=%d Threshold=%u\n", pVCpu->hm.s.vmx.pbVirtApic[0x80], u32TprThreshold)); 2428 2429 rc = VMXWriteVmcs32(VMX_VMCS32_CTRL_TPR_THRESHOLD, u32TprThreshold); 2429 2430 AssertRCReturn(rc, rc); … … 4253 4254 VMXLOCAL_INIT_READ_CACHE_FIELD(pCache, VMX_VMCS32_GUEST_ACTIVITY_STATE); 4254 4255 VMXLOCAL_INIT_READ_CACHE_FIELD(pCache, VMX_VMCS32_GUEST_SMBASE); 4255 VMXLOCAL_INIT_READ_CACHE_FIELD(pCache, VMX_VMCS32_GUEST_PREEMPT ION_TIMER_VALUE);4256 VMXLOCAL_INIT_READ_CACHE_FIELD(pCache, VMX_VMCS32_GUEST_PREEMPT_TIMER_VALUE); 4256 4257 #endif 4257 4258 … … 4503 4504 4504 4505 uint32_t cPreemptionTickCount = (uint32_t)RT_MIN(cTicksToDeadline, UINT32_MAX - 16); 4505 rc = VMXWriteVmcs32(VMX_VMCS32_GUEST_PREEMPT ION_TIMER_VALUE, cPreemptionTickCount);AssertRC(rc);4506 rc = VMXWriteVmcs32(VMX_VMCS32_GUEST_PREEMPT_TIMER_VALUE, cPreemptionTickCount); AssertRC(rc); 4506 4507 } 4507 4508 else … … 6578 6579 && pVmxTransient->u8GuestTpr != pVCpu->hm.s.vmx.pbVirtApic[0x80]) 6579 6580 { 6581 Log(("Setting TPR=%d\n", pVCpu->hm.s.vmx.pbVirtApic[0x80])); 6580 6582 rc = PDMApicSetTPR(pVCpu, pVCpu->hm.s.vmx.pbVirtApic[0x80]); 6581 6583 AssertRC(rc); … … 6686 6688 case VMX_EXIT_MONITOR: rc = hmR0VmxExitMonitor(pVM, pVCpu, pMixedCtx, pVmxTransient); break; 6687 6689 case VMX_EXIT_TASK_SWITCH: rc = hmR0VmxExitTaskSwitch(pVM, pVCpu, pMixedCtx, pVmxTransient); break; 6688 case VMX_EXIT_PREEMPT ION_TIMER: rc = hmR0VmxExitPreemptionTimer(pVM, pVCpu, pMixedCtx, pVmxTransient); break;6690 case VMX_EXIT_PREEMPT_TIMER: rc = hmR0VmxExitPreemptTimer(pVM, pVCpu, pMixedCtx, pVmxTransient); break; 6689 6691 case VMX_EXIT_RDMSR: rc = hmR0VmxExitRdmsr(pVM, pVCpu, pMixedCtx, pVmxTransient); break; 6690 6692 case VMX_EXIT_WRMSR: rc = hmR0VmxExitWrmsr(pVM, pVCpu, pMixedCtx, pVmxTransient); break; … … 7316 7318 * VM-exit handler for expiry of the VMX preemption timer. 7317 7319 */ 7318 static DECLCALLBACK(int) hmR0VmxExitPreempt ionTimer(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient)7320 static DECLCALLBACK(int) hmR0VmxExitPreemptTimer(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXTRANSIENT pVmxTransient) 7319 7321 { 7320 7322 VMX_VALIDATE_EXIT_HANDLER_PARAMS(); … … 8006 8008 #else 8007 8009 /* Aggressive state sync. for now. */ 8008 rc = hmR0VmxSaveGuestGprs(pVM, pVCpu, pMixedCtx);8010 rc = hmR0VmxSaveGuestGprs(pVM, pVCpu, pMixedCtx); 8009 8011 rc |= hmR0VmxSaveGuestControlRegs(pVM, pVCpu, pMixedCtx); 8010 8012 rc |= hmR0VmxSaveGuestSegmentRegs(pVM, pVCpu, pMixedCtx); -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r45474 r45478 1771 1771 cTicksToDeadline >>= pVM->hm.s.vmx.cPreemptTimerShift; 1772 1772 uint32_t cPreemptionTickCount = (uint32_t)RT_MIN(cTicksToDeadline, UINT32_MAX - 16); 1773 rc = VMXWriteVmcs(VMX_VMCS32_GUEST_PREEMPT ION_TIMER_VALUE, cPreemptionTickCount);1773 rc = VMXWriteVmcs(VMX_VMCS32_GUEST_PREEMPT_TIMER_VALUE, cPreemptionTickCount); 1774 1774 AssertRC(rc); 1775 1775 } … … 4785 4785 } 4786 4786 4787 case VMX_EXIT_PREEMPT ION_TIMER:/* 52 VMX-preemption timer expired. The preemption timer counted down to zero. */4787 case VMX_EXIT_PREEMPT_TIMER: /* 52 VMX-preemption timer expired. The preemption timer counted down to zero. */ 4788 4788 if (!TMTimerPollBool(pVM, pVCpu)) 4789 4789 goto ResumeExecution; … … 4808 4808 case VMX_EXIT_EPT_VIOLATION: 4809 4809 case VMX_EXIT_EPT_MISCONFIG: /* 49 EPT misconfig is used by the PGM/MMIO optimizations. */ 4810 case VMX_EXIT_PREEMPT ION_TIMER:/* 52 VMX-preemption timer expired. The preemption timer counted down to zero. */4810 case VMX_EXIT_PREEMPT_TIMER: /* 52 VMX-preemption timer expired. The preemption timer counted down to zero. */ 4811 4811 /* Already handled above. */ 4812 4812 break;
Note:
See TracChangeset
for help on using the changeset viewer.