Changeset 50918 in vbox
- Timestamp:
- Mar 28, 2014 2:37:18 PM (11 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r50880 r50918 2955 2955 * is effectively what the CPU does for "scaling by 8". TI is always 0 and RPL should be too in most cases. 2956 2956 */ 2957 if ((uSelTR & X86_SEL_MASK) > Gdtr.cbGdt)2957 if ((uSelTR | X86_SEL_RPL_LDT) > Gdtr.cbGdt) 2958 2958 { 2959 2959 AssertMsgFailed(("hmR0VmxSaveHostSegmentRegs: TR selector exceeds limit. TR=%RTsel cbGdt=%#x\n", uSelTR, Gdtr.cbGdt)); … … 7043 7043 hmR0VmxSetIntWindowExitVmcs(pVCpu); 7044 7044 } 7045 /* 7046 * Check if the guest can receive external interrupts (PIC/APIC). Once we do PDMGetInterrupt() we -must- deliver 7047 * the interrupt ASAP. We must not execute any guest code until we inject the interrupt. 7048 */ 7045 7049 else if ( VMCPU_FF_IS_PENDING(pVCpu, (VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC)) 7046 7050 && !pVCpu->hm.s.fSingleInstruction) 7047 7051 { 7048 /*7049 * Check if the guest can receive external interrupts (PIC/APIC). Once we do PDMGetInterrupt() we -must- deliver7050 * the interrupt ASAP. We must not execute any guest code until we inject the interrupt which is why it is7051 * evaluated here and not set as pending, solely based on the force-flags.7052 */7053 7052 int rc = hmR0VmxSaveGuestRflags(pVCpu, pMixedCtx); 7054 7053 AssertRC(rc); … … 7626 7625 rc = VMXWriteVmcs32(VMX_VMCS_GUEST_PENDING_DEBUG_EXCEPTIONS, 0); 7627 7626 AssertRC(rc); 7627 7628 /* We deliberately don't clear "hm.s.Event.fPending" here, it's taken 7629 care of in hmR0VmxExitToRing3() converting the pending event to TRPM. */ 7628 7630 } 7629 7631 … … 8121 8123 return VINF_EM_RAW_TO_R3; 8122 8124 } 8125 8123 8126 if (RTThreadPreemptIsPending(NIL_RTTHREAD)) 8124 8127 { -
trunk/src/VBox/VMM/VMMR3/HM.cpp
r50713 r50918 2523 2523 if (pCtx->gdtr.cbGdt) 2524 2524 { 2525 if ( pCtx->tr.Sel> pCtx->gdtr.cbGdt)2525 if ((pCtx->tr.Sel | X86_SEL_RPL_LDT) > pCtx->gdtr.cbGdt) 2526 2526 { 2527 2527 STAM_COUNTER_INC(&pVCpu->hm.s.StatVmxCheckBadTr); 2528 2528 return false; 2529 2529 } 2530 else if ( pCtx->ldtr.Sel> pCtx->gdtr.cbGdt)2530 else if ((pCtx->ldtr.Sel | X86_SEL_RPL_LDT) > pCtx->gdtr.cbGdt) 2531 2531 { 2532 2532 STAM_COUNTER_INC(&pVCpu->hm.s.StatVmxCheckBadLdt);
Note:
See TracChangeset
for help on using the changeset viewer.