Changeset 47773 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Aug 15, 2013 2:53:40 PM (11 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMR0.cpp
r47771 r47773 82 82 { 83 83 /** Per CPU globals. */ 84 HMGLOBALCPUINFO 84 HMGLOBALCPUINFO aCpuInfo[RTCPUSET_MAX_CPUS]; 85 85 86 86 /** @name Ring-0 method table for AMD-V and VT-x specific operations. … … 344 344 || u == UINT32_C(0x000106E5) /* 322166.pdf - AAN92 - B1 - Intel CoreTM i7-800 and i5-700 Desktop Processor Series */ 345 345 || u == UINT32_C(0x000106E5) /* 320767.pdf - AAP86 - B1 - Intel Core i7-900 Mobile Processor Extreme Edition Series, Intel Core i7-800 and i7-700 Mobile Processor Series */ 346 || u == UINT32_C(0x000106A0) /* ?321333.pdf - AAM126 - C0 - Intel Xeon Processor 3500 Series Specification */347 || u == UINT32_C(0x000106A1) /* ?321333.pdf - AAM126 - C1 - Intel Xeon Processor 3500 Series Specification */346 || u == UINT32_C(0x000106A0) /* 321333.pdf - AAM126 - C0 - Intel Xeon Processor 3500 Series Specification */ 347 || u == UINT32_C(0x000106A1) /* 321333.pdf - AAM126 - C1 - Intel Xeon Processor 3500 Series Specification */ 348 348 || u == UINT32_C(0x000106A4) /* 320836.pdf - AAJ124 - C0 - Intel Core i7-900 Desktop Processor Extreme Edition Series and Intel Core i7-900 Desktop Processor Series */ 349 349 || u == UINT32_C(0x000106A5) /* 321333.pdf - AAM126 - D0 - Intel Xeon Processor 3500 Series Specification */ … … 1644 1644 VMMR0_INT_DECL(int) HMR0TestSwitcher3264(PVM pVM) 1645 1645 { 1646 PVMCPU pVCpu = &pVM->aCpus[0];1647 PCPUMCTX pCtx = CPUMQueryGuestCtxPtr(pVCpu);1646 PVMCPU pVCpu = &pVM->aCpus[0]; 1647 PCPUMCTX pCtx = CPUMQueryGuestCtxPtr(pVCpu); 1648 1648 uint32_t aParam[5] = {0, 1, 2, 3, 4}; 1649 1649 int rc; -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r47771 r47773 5507 5507 * If VT-x marks the segment as unusable, most other bits remain undefined: 5508 5508 * - For CS the L, D and G bits have meaning. 5509 * - For SS the DPL ha vemeaning (it -is- the CPL for Intel and VBox).5509 * - For SS the DPL has meaning (it -is- the CPL for Intel and VBox). 5510 5510 * - For the remaining data segments no bits are defined. 5511 5511 * 5512 * The present bit and the unus edbit has been observed to be set at the5512 * The present bit and the unusable bit has been observed to be set at the 5513 5513 * same time (the selector was supposed to invalid as we started executing 5514 5514 * a V8086 interrupt in ring-0). … … 5517 5517 * cleared. Some of the other VBox code recognizes the unusable bit, but 5518 5518 * AMD-V certainly don't, and REM doesn't really either. So, to be on the 5519 * safe side here we'll strip off P and other bits we don't care about. If5520 * any code breaks because attr.u != 0 when Sel < 4, it should be fixed.5519 * safe side here, we'll strip off P and other bits we don't care about. If 5520 * any code breaks because Attr.u != 0 when Sel < 4, it should be fixed. 5521 5521 * 5522 5522 * See Intel spec. 27.3.2 "Saving Segment Registers and Descriptor-Table Registers". … … 5529 5529 pSelReg->Attr.u &= X86DESCATTR_UNUSABLE | X86DESCATTR_L | X86DESCATTR_D | X86DESCATTR_G 5530 5530 | X86DESCATTR_DPL | X86DESCATTR_TYPE | X86DESCATTR_DT; 5531 5531 5532 Log4(("hmR0VmxReadSegmentReg: Unusable idxSel=%#x attr=%#x -> %#x\n", idxSel, u32Val, pSelReg->Attr.u)); 5532 5533 #ifdef DEBUG_bird … … 6193 6194 pVCpu->hm.s.fClearTrapFlag = false; 6194 6195 } 6195 /** @todo there seems to be issues with the resume flag when the monitor trap6196 * flag is pending without being used. Seen early in bios init when6197 * accessing APIC page in prot mode. */6196 /** @todo there seems to be issues with the resume flag when the monitor trap 6197 * flag is pending without being used. Seen early in bios init when 6198 * accessing APIC page in prot mode. */ 6198 6199 6199 6200 /* On our way back from ring-3 the following needs to be done. */ … … 7491 7492 * Otherwise, make sure one of the TFs gets set. 7492 7493 */ 7493 int rc2 = hmR0Vmx LoadGuestRip(pVCpu, pCtx);7494 rc2 |= hmR0VmxSaveGuestSegmentRegs(pVCpu, pCtx);7494 int rc2 = hmR0VmxSaveGuestRip(pVCpu, pCtx); 7495 rc2 |= hmR0VmxSaveGuestSegmentRegs(pVCpu, pCtx); 7495 7496 AssertRCReturn(rc2, rc2); 7496 7497 if ( pCtx->rip != uRipStart … … 7751 7752 Assert(u32Val == pVCpu->hm.s.vmx.u32ProcCtls); 7752 7753 #endif 7753 const boolfLongModeGuest = !!(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_ENTRY_IA32E_MODE_GUEST);7754 bool const fLongModeGuest = !!(pVCpu->hm.s.vmx.u32ProcCtls & VMX_VMCS_CTRL_ENTRY_IA32E_MODE_GUEST); 7754 7755 7755 7756 /*
Note:
See TracChangeset
for help on using the changeset viewer.