Changeset 47378 in vbox for trunk/src/VBox
- Timestamp:
- Jul 24, 2013 4:32:46 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r47353 r47378 126 126 * 127 127 * We need to intercept all exceptions manually (except #PF). #NM is also 128 * handled s pearetely, see hmR0VmxLoadGuestControlRegs(). #PF need not be128 * handled separately, see hmR0VmxLoadGuestControlRegs(). #PF need not be 129 129 * intercepted even in real-mode if we have Nested Paging support. 130 130 */ … … 219 219 bool fUpdateTscOffsettingAndPreemptTimer; 220 220 /** Whether the VM-exit was caused by a page-fault during delivery of a 221 * contribut ary exception or a page-fault. */221 * contributory exception or a page-fault. */ 222 222 bool fVectoringPF; 223 223 } VMXTRANSIENT, *PVMXTRANSIENT; … … 1991 1991 /** 1992 1992 * Sets up the VM for execution under VT-x. 1993 * This function is only called once per-VM during init alization.1993 * This function is only called once per-VM during initialization. 1994 1994 * 1995 1995 * @returns VBox status code. … … 5432 5432 * See Intel spec. 27.3.2 "Saving Segment Registers and Descriptor-Table Registers". 5433 5433 * 5434 * bird: This isn't quite as simple. VT-x and VBox(!) requires the DPL for SS to be the thesame as CPL. In 64-bit mode it5434 * bird: This isn't quite as simple. VT-x and VBox(!) requires the DPL for SS to be the same as CPL. In 64-bit mode it 5435 5435 * is possible (int/trap/xxx injects does this when switching rings) to load SS with a NULL selector and RPL=CPL. 5436 5436 * The Attr.u = X86DESCATTR_UNUSABLE works fine as long as nobody uses ring-1 or ring-2. VT-x updates the DPL 5437 * correctly in the attributes of SS even when the unusable bit is set, we need to prese ve the DPL or we get invalid5437 * correctly in the attributes of SS even when the unusable bit is set, we need to preserve the DPL or we get invalid 5438 5438 * guest state trouble. Try bs2-cpu-hidden-regs-1. 5439 5439 */ … … 6620 6620 LogFlowFunc(("pVM=%p pVCpu=%p\n", pVM, pVCpu)); 6621 6621 6622 #ifdef VBOX_STRICT 6622 6623 /* Make sure we're in VMX root mode. */ 6623 6624 RTCCUINTREG u32HostCR4 = ASMGetCR4(); … … 6627 6628 return VERR_VMX_X86_CR4_VMXE_CLEARED; 6628 6629 } 6630 #endif 6629 6631 6630 6632 /* Load the active VMCS as the current one. */ … … 6633 6635 return rc; 6634 6636 6635 /** @todo this will change with preemption hooks where can canVMRESUME as long6637 /** @todo this will change with preemption hooks where can VMRESUME as long 6636 6638 * as we're no preempted. */ 6637 6639 pVCpu->hm.s.fResumeVM = false; … … 6849 6851 * This may cause longjmps to ring-3 and may even result in rescheduling to the 6850 6852 * recompiler. We must be cautious what we do here regarding committing 6851 * guest-state information into the theVMCS assuming we assuredly execute the6853 * guest-state information into the VMCS assuming we assuredly execute the 6852 6854 * guest in VT-x. If we fall back to the recompiler after updating the VMCS and 6853 6855 * clearing the common-state (TRPM/forceflags), we must undo those changes so
Note:
See TracChangeset
for help on using the changeset viewer.