Index: /trunk/src/VBox/VMM/VMMR3/CPUM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 54748)
+++ /trunk/src/VBox/VMM/VMMR3/CPUM.cpp	(revision 54749)
@@ -726,7 +726,7 @@
     if (!fHWVirtExEnabled)
     {
-        Assert(   pVM->cpum.s.aGuestCpuIdPatmStd[4].uEax == 0
+        Assert(   (pVM->cpum.s.aGuestCpuIdPatmStd[4].uEax & UINT32_C(0x0000ffff)) == 0
                || pVM->cpum.s.aGuestCpuIdPatmStd[0].uEax < 0x4);
-        pVM->cpum.s.aGuestCpuIdPatmStd[4].uEax = 0;
+        pVM->cpum.s.aGuestCpuIdPatmStd[4].uEax &= UINT32_C(0x0000ffff);
     }
 }
Index: /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp	(revision 54748)
+++ /trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp	(revision 54749)
@@ -2525,5 +2525,5 @@
     while ((pCurLeaf = cpumR3CpuIdGetExactLeaf(pCpum, 4, uSubLeaf)) != NULL)
     {
-        pCurLeaf->uEax &= UINT32_C(0xffffc000); /* Clear the #maxcores, #threads-sharing-cache (both are #-1).*/
+        pCurLeaf->uEax &= UINT32_C(0x00003fff); /* Clear the #maxcores, #threads-sharing-cache (both are #-1).*/
 #ifdef VBOX_WITH_MULTI_CORE
         if (   pVM->cCpus > 1
@@ -3169,18 +3169,19 @@
     AssertLogRelRCReturn(rc, rc);
 
-    /** @cfgm{/CPUM/MaxStdLeaf, uint32_t, 0x00000005}
+    /** @cfgm{/CPUM/MaxStdLeaf, uint32_t, 0x00000016}
      * The last standard leaf to keep.  The actual last value that is stored in EAX
      * is RT_MAX(CPUID[0].EAX,/CPUM/MaxStdLeaf).  Leaves beyond the max leaf are
      * removed.  (This works independently of and differently from NT4LeafLimit.)
-     */
-    rc = CFGMR3QueryU32Def(pCpumCfg, "MaxStdLeaf", &pConfig->uMaxStdLeaf, UINT32_C(0x00000005));
+     * The default is usually set to what we're able to reasonably sanitize.
+     */
+    rc = CFGMR3QueryU32Def(pCpumCfg, "MaxStdLeaf", &pConfig->uMaxStdLeaf, UINT32_C(0x00000016));
     AssertLogRelRCReturn(rc, rc);
 
-    /** @cfgm{/CPUM/MaxExtLeaf, uint32_t, 0x80000008}
+    /** @cfgm{/CPUM/MaxExtLeaf, uint32_t, 0x8000001e}
      * The last extended leaf to keep.  The actual last value that is stored in EAX
      * is RT_MAX(CPUID[0x80000000].EAX,/CPUM/MaxStdLeaf).  Leaves beyond the max
-     * leaf are removed.
-     */
-    rc = CFGMR3QueryU32Def(pCpumCfg, "MaxExtLeaf", &pConfig->uMaxExtLeaf, UINT32_C(0x80000008));
+     * leaf are removed.  The default is set to what we're able to sanitize.
+     */
+    rc = CFGMR3QueryU32Def(pCpumCfg, "MaxExtLeaf", &pConfig->uMaxExtLeaf, UINT32_C(0x8000001e));
     AssertLogRelRCReturn(rc, rc);
 
@@ -3188,5 +3189,5 @@
      * The last extended leaf to keep.  The actual last value that is stored in EAX
      * is RT_MAX(CPUID[0xc0000000].EAX,/CPUM/MaxCentaurLeaf).  Leaves beyond the max
-     * leaf are removed.
+     * leaf are removed.  The default is set to what we're able to sanitize.
      */
     rc = CFGMR3QueryU32Def(pCpumCfg, "MaxCentaurLeaf", &pConfig->uMaxCentaurLeaf, UINT32_C(0xc0000004));
