]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Changes in shared code that don't affect open-vm-tools functionality.
authorVMware, Inc <>
Thu, 24 Feb 2011 21:51:18 +0000 (13:51 -0800)
committerMarcelo Vanzin <mvanzin@vmware.com>
Thu, 24 Feb 2011 21:51:18 +0000 (13:51 -0800)
Signed-off-by: Marcelo Vanzin <mvanzin@vmware.com>
open-vm-tools/lib/include/x86cpuid.h

index 3620124278ff17cd2cc47305152d212c1e418bdf..15514979f7c67714189f465c3a37b0d86f5f131b 100644 (file)
@@ -808,47 +808,50 @@ FIELD_FUNC(AMD_CORES_PER_COMPUTE_UNIT, CPUID_AMD_ID81EEBX_CORES_PER_COMPUTE_UNIT
  * macros/functions for reading cpuid fields.
  */
 
-#define CPUID_FAMILY_EXTENDED 15
+#define CPUID_FAMILY_EXTENDED        15
 
 /* Effective Intel CPU Families */
-#define CPUID_FAMILY_486      4
-#define CPUID_FAMILY_P5       5
-#define CPUID_FAMILY_P6       6
-#define CPUID_FAMILY_P4       15
+#define CPUID_FAMILY_486              4
+#define CPUID_FAMILY_P5               5
+#define CPUID_FAMILY_P6               6
+#define CPUID_FAMILY_P4              15
 
 /* Effective AMD CPU Families */
-#define CPUID_FAMILY_5x86     4
-#define CPUID_FAMILY_K5       5
-#define CPUID_FAMILY_K6       5
-#define CPUID_FAMILY_K7       6
-#define CPUID_FAMILY_K8       15
-#define CPUID_FAMILY_K8L      16
-#define CPUID_FAMILY_K8MOBILE 17
-#define CPUID_FAMILY_LLANO    18
-#define CPUID_FAMILY_BOBCAT   20
-#define CPUID_FAMILY_BULLDOZER 21
+#define CPUID_FAMILY_5x86             4
+#define CPUID_FAMILY_K5               5 
+#define CPUID_FAMILY_K6               5
+#define CPUID_FAMILY_K7               6
+#define CPUID_FAMILY_K8              15
+#define CPUID_FAMILY_K8L             16
+#define CPUID_FAMILY_K8MOBILE        17
+#define CPUID_FAMILY_LLANO           18
+#define CPUID_FAMILY_BOBCAT          20
+#define CPUID_FAMILY_BULLDOZER       21
 
 /* Effective VIA CPU Families */
-#define CPUID_FAMILY_C7       6
+#define CPUID_FAMILY_C7               6
 
 /* Intel model information */
-#define CPUID_MODEL_PPRO       1
-#define CPUID_MODEL_PII_03     3
-#define CPUID_MODEL_PII_05     5
-#define CPUID_MODEL_CELERON_06 6
-#define CPUID_MODEL_PM_09      9
-#define CPUID_MODEL_PM_0D      13
-#define CPUID_MODEL_PM_0E      14    // Yonah / Sossaman
-#define CPUID_MODEL_CORE_0F    15    // Conroe / Merom
-#define CPUID_MODEL_CORE_17    0x17  // Penryn
-#define CPUID_MODEL_NEHALEM_1A 0x1a  // Nehalem / Gainestown
-#define CPUID_MODEL_ATOM_1C    0x1c  // Silverthorne / Diamondville
-#define CPUID_MODEL_CORE_1D    0x1d  // Dunnington
-#define CPUID_MODEL_NEHALEM_1E 0x1e  // Lynnfield
-#define CPUID_MODEL_NEHALEM_1F 0x1f  // Havendale
-#define CPUID_MODEL_NEHALEM_25 0x25  // Westmere / Clarkdale
-#define CPUID_MODEL_NEHALEM_2C 0x2c  // Westmere-EP
-#define CPUID_MODEL_NEHALEM_2E 0x2e  // Nehalem-EX
+#define CPUID_MODEL_PPRO              1
+#define CPUID_MODEL_PII_03            3
+#define CPUID_MODEL_PII_05            5
+#define CPUID_MODEL_CELERON_06        6
+#define CPUID_MODEL_PM_09             9
+#define CPUID_MODEL_PM_0D            13
+#define CPUID_MODEL_PM_0E            14  // Yonah / Sossaman
+#define CPUID_MODEL_CORE_0F          15  // Conroe / Merom
+#define CPUID_MODEL_CORE_17        0x17  // Penryn
+#define CPUID_MODEL_NEHALEM_1A     0x1a  // Nehalem / Gainestown
+#define CPUID_MODEL_ATOM_1C        0x1c  // Silverthorne / Diamondville
+#define CPUID_MODEL_CORE_1D        0x1d  // Dunnington
+#define CPUID_MODEL_NEHALEM_1E     0x1e  // Lynnfield
+#define CPUID_MODEL_NEHALEM_1F     0x1f  // Havendale
+#define CPUID_MODEL_NEHALEM_25     0x25  // Westmere / Clarkdale
+#define CPUID_MODEL_SANDYBRIDGE_2A 0x2a  // Sandybridge (desktop/mobile)
+#define CPUID_MODEL_SANDYBRIDGE_2D 0x2d  // Sandybridge-EP
+#define CPUID_MODEL_NEHALEM_2C     0x2c  // Westmere-EP
+#define CPUID_MODEL_NEHALEM_2E     0x2e  // Nehalem-EX
+#define CPUID_MODEL_NEHALEM_2F     0x2f  // Westmere-EX
 
 #define CPUID_MODEL_PIII_07    7
 #define CPUID_MODEL_PIII_08    8
@@ -986,16 +989,26 @@ CPUID_UARCH_IS_NEHALEM(uint32 v) // IN: %eax from CPUID with %eax=1.
    uint32 effectiveModel = CPUID_EFFECTIVE_MODEL(v);
 
    return CPUID_FAMILY_IS_P6(v) &&
-          (
-           effectiveModel == CPUID_MODEL_NEHALEM_1A ||
+          (effectiveModel == CPUID_MODEL_NEHALEM_1A ||
            effectiveModel == CPUID_MODEL_NEHALEM_1E ||
            effectiveModel == CPUID_MODEL_NEHALEM_1F ||
            effectiveModel == CPUID_MODEL_NEHALEM_25 ||
            effectiveModel == CPUID_MODEL_NEHALEM_2C ||
-           effectiveModel == CPUID_MODEL_NEHALEM_2E);
+           effectiveModel == CPUID_MODEL_NEHALEM_2E ||
+           effectiveModel == CPUID_MODEL_NEHALEM_2F);
 }
 
 
+static INLINE Bool
+CPUID_UARCH_IS_SANDYBRIDGE(uint32 v) // IN: %eax from CPUID with %eax=1.
+{
+   /* Assumes the CPU manufacturer is Intel. */
+   uint32 effectiveModel = CPUID_EFFECTIVE_MODEL(v);
+
+   return CPUID_FAMILY_IS_P6(v) &&
+          (effectiveModel == CPUID_MODEL_SANDYBRIDGE_2A ||
+           effectiveModel == CPUID_MODEL_SANDYBRIDGE_2D);
+}
 
 
 static INLINE Bool