Changeset 91274 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 16, 2021 11:02:42 AM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 146934
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
r91266 r91274 4924 4924 4925 4925 /* 4926 * Set the page attribute table bit. This is alternative page level4927 * cache control that doesn't much matter when everything is4928 * virtualized, though it may when passing thru device memory.4929 */4930 case CPUMCPUIDFEATURE_PAT:4931 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001));4932 if (pLeaf)4933 pVM->cpum.s.aGuestCpuIdPatmStd[1].uEdx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_PAT;4934 4935 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001));4936 if ( pLeaf4937 && ( pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD4938 || pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_HYGON))4939 pVM->cpum.s.aGuestCpuIdPatmExt[1].uEdx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_PAT;4940 4941 pVM->cpum.s.GuestFeatures.fPat = 1;4942 LogRel(("CPUM: SetGuestCpuIdFeature: Enabled PAT\n"));4943 break;4944 4945 /*4946 4926 * Set the RDTSCP support bit. 4947 4927 * Assumes the caller knows what it's doing! (host must support this) … … 4973 4953 pVM->cpum.s.GuestFeatures.fHypervisorPresent = 1; 4974 4954 LogRel(("CPUM: SetGuestCpuIdFeature: Enabled Hypervisor Present bit\n")); 4975 break;4976 4977 /*4978 * Set the MWAIT Extensions Present bit in the MWAIT/MONITOR leaf.4979 * This currently includes the Present bit and MWAITBREAK bit as well.4980 */4981 case CPUMCPUIDFEATURE_MWAIT_EXTS:4982 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000005));4983 if ( !pLeaf4984 || !pVM->cpum.s.HostFeatures.fMWaitExtensions)4985 {4986 LogRel(("CPUM: WARNING! Can't turn on MWAIT Extensions when the host doesn't support it!\n"));4987 return;4988 }4989 4990 /* Valid for both Intel and AMD. */4991 pVM->cpum.s.aGuestCpuIdPatmStd[5].uEcx = pLeaf->uEcx |= X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0;4992 pVM->cpum.s.GuestFeatures.fMWaitExtensions = 1;4993 LogRel(("CPUM: SetGuestCpuIdFeature: Enabled MWAIT Extensions.\n"));4994 4955 break; 4995 4956 … … 5121 5082 case CPUMCPUIDFEATURE_LAHF: return pVM->cpum.s.GuestFeatures.fLahfSahf; 5122 5083 case CPUMCPUIDFEATURE_LONG_MODE: return pVM->cpum.s.GuestFeatures.fLongMode; 5123 case CPUMCPUIDFEATURE_PAT: return pVM->cpum.s.GuestFeatures.fPat;5124 5084 case CPUMCPUIDFEATURE_RDTSCP: return pVM->cpum.s.GuestFeatures.fRdTscP; 5125 5085 case CPUMCPUIDFEATURE_HVP: return pVM->cpum.s.GuestFeatures.fHypervisorPresent; 5126 case CPUMCPUIDFEATURE_MWAIT_EXTS: return pVM->cpum.s.GuestFeatures.fMWaitExtensions;5127 5086 case CPUMCPUIDFEATURE_SPEC_CTRL: return pVM->cpum.s.GuestFeatures.fSpeculationControl; 5128 5129 5087 case CPUMCPUIDFEATURE_INVALID: 5130 5088 case CPUMCPUIDFEATURE_32BIT_HACK: … … 5188 5146 break; 5189 5147 5190 case CPUMCPUIDFEATURE_PAT:5191 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001));5192 if (pLeaf)5193 pVM->cpum.s.aGuestCpuIdPatmStd[1].uEdx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_PAT;5194 5195 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001));5196 if ( pLeaf5197 && ( pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD5198 || pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_HYGON))5199 pVM->cpum.s.aGuestCpuIdPatmExt[1].uEdx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_PAT;5200 5201 pVM->cpum.s.GuestFeatures.fPat = 0;5202 Log(("CPUM: ClearGuestCpuIdFeature: Disabled PAT!\n"));5203 break;5204 5205 5148 case CPUMCPUIDFEATURE_LONG_MODE: 5206 5149 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001)); … … 5237 5180 pVM->cpum.s.aGuestCpuIdPatmStd[1].uEcx = pLeaf->uEcx &= ~X86_CPUID_FEATURE_ECX_HVP; 5238 5181 pVM->cpum.s.GuestFeatures.fHypervisorPresent = 0; 5239 break;5240 5241 case CPUMCPUIDFEATURE_MWAIT_EXTS:5242 pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000005));5243 if (pLeaf)5244 pVM->cpum.s.aGuestCpuIdPatmStd[5].uEcx = pLeaf->uEcx &= ~(X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0);5245 pVM->cpum.s.GuestFeatures.fMWaitExtensions = 0;5246 Log(("CPUM: ClearGuestCpuIdFeature: Disabled MWAIT Extensions!\n"));5247 5182 break; 5248 5183
Note:
See TracChangeset
for help on using the changeset viewer.