Index: /trunk/src/VBox/VMM/VMMR3/CPUM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 50037)
+++ /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 50038)
@@ -1169,8 +1169,4 @@
 
 
-    PCPUMCPUIDLEAF pStdLeaf0 = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 0, 0);
-    AssertLogRelReturn(pStdLeaf0, VERR_CPUM_IPE_2);
-
-
     /* Cpuid 1:
      * Only report features we can support.
@@ -1179,5 +1175,6 @@
      *       options may require adjusting (i.e. stripping what was enabled).
      */
-    PCPUMCPUIDLEAF pStdFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 1, 0);
+    PCPUMCPUIDLEAF pStdFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves,
+                                                        1, 0); /* Note! Must refetch when used later. */
     AssertLogRelReturn(pStdFeatureLeaf, VERR_CPUM_IPE_2);
     pStdFeatureLeaf->uEdx        &= X86_CPUID_FEATURE_EDX_FPU
@@ -1280,5 +1277,5 @@
      */
     PCPUMCPUIDLEAF pExtFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves,
-                                                        UINT32_C(0x80000001), 0);
+                                                        UINT32_C(0x80000001), 0); /* Note! Must refetch when used later. */
     if (pExtFeatureLeaf)
     {
@@ -1403,4 +1400,5 @@
      */
     pCurLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 3, 0);
+    pStdFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 1, 0);
     if (   !(pStdFeatureLeaf->uEdx & X86_CPUID_FEATURE_EDX_PSN)
         && pCurLeaf)
@@ -1459,4 +1457,5 @@
     if (pCurLeaf)
     {
+        pStdFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 1, 0);
         if (!(pStdFeatureLeaf->uEcx & X86_CPUID_FEATURE_ECX_MONITOR))
             pCurLeaf->uEax = pCurLeaf->uEbx = 0;
@@ -1558,4 +1557,6 @@
             /* Legacy method to determine the number of cores. */
             pCurLeaf->uEcx |= (pVM->cCpus - 1); /* NC: Number of CPU cores - 1; 8 bits */
+            pExtFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves,
+                                                 UINT32_C(0x80000001), 0);
             if (pExtFeatureLeaf)
                 pExtFeatureLeaf->uEcx |= X86_CPUID_AMD_FEATURE_ECX_CMPL;
@@ -1658,4 +1659,5 @@
     if (pCPUM->GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_INTEL)
     {
+        pStdFeatureLeaf = cpumR3CpuIdGetLeaf(pCPUM->GuestInfo.paCpuIdLeavesR3, pCPUM->GuestInfo.cCpuIdLeaves, 1, 0);
         uint32_t uCurIntelFamilyModelStep = RT_MAKE_U32_FROM_U8(ASMGetCpuStepping(pStdFeatureLeaf->uEax),
                                                                 ASMGetCpuModelIntel(pStdFeatureLeaf->uEax),
