6864407 AMD's Lisbon processor introduces new socket type
authorSrihari Venkatesan <Srihari.Venkatesan@Sun.COM>
Tue, 15 Sep 2009 18:44:23 -0700
changeset 10551 62422ea6e65b
parent 10550 77ea2655f7b2
child 10552 bf9134a043f1
6864407 AMD's Lisbon processor introduces new socket type Contributed by [email protected]
usr/src/uts/i86pc/os/cpuid_subr.c
usr/src/uts/intel/sys/x86_archext.h
--- a/usr/src/uts/i86pc/os/cpuid_subr.c	Tue Sep 15 16:03:59 2009 -0700
+++ b/usr/src/uts/i86pc/os/cpuid_subr.c	Tue Sep 15 18:44:23 2009 -0700
@@ -67,36 +67,48 @@
  * Second index by (model & 0x3) for family 0fh
  * or CPUID bits for later families
  */
-static uint32_t amd_skts[4][4] = {
+static uint32_t amd_skts[4][8] = {
 	/*
 	 * Family 0xf revisions B through E
 	 */
 #define	A_SKTS_0			0
 	{
-		X86_SOCKET_754,		/* 0b00 */
-		X86_SOCKET_940,		/* 0b01 */
-		X86_SOCKET_754,		/* 0b10 */
-		X86_SOCKET_939		/* 0b11 */
+		X86_SOCKET_754,		/* 0b000 */
+		X86_SOCKET_940,		/* 0b001 */
+		X86_SOCKET_754,		/* 0b010 */
+		X86_SOCKET_939,		/* 0b011 */
+		X86_SOCKET_UNKNOWN,	/* 0b100 */
+		X86_SOCKET_UNKNOWN,	/* 0b101 */
+		X86_SOCKET_UNKNOWN,	/* 0b110 */
+		X86_SOCKET_UNKNOWN	/* 0b111 */
 	},
 	/*
 	 * Family 0xf revisions F and G
 	 */
 #define	A_SKTS_1			1
 	{
-		X86_SOCKET_S1g1,	/* 0b00 */
-		X86_SOCKET_F1207,	/* 0b01 */
-		X86_SOCKET_UNKNOWN,	/* 0b10 */
-		X86_SOCKET_AM2		/* 0b11 */
+		X86_SOCKET_S1g1,	/* 0b000 */
+		X86_SOCKET_F1207,	/* 0b001 */
+		X86_SOCKET_UNKNOWN,	/* 0b010 */
+		X86_SOCKET_AM2,		/* 0b011 */
+		X86_SOCKET_UNKNOWN,	/* 0b100 */
+		X86_SOCKET_UNKNOWN,	/* 0b101 */
+		X86_SOCKET_UNKNOWN,	/* 0b110 */
+		X86_SOCKET_UNKNOWN	/* 0b111 */
 	},
 	/*
 	 * Family 0x10
 	 */
 #define	A_SKTS_2			2
 	{
-		X86_SOCKET_F1207,	/* 0b00 */
-		X86_SOCKET_AM,		/* 0b01 */
-		X86_SOCKET_S1g3,	/* 0b10 */
-		X86_SOCKET_G34,		/* 0b11 */
+		X86_SOCKET_F1207,	/* 0b000 */
+		X86_SOCKET_AM,		/* 0b001 */
+		X86_SOCKET_S1g3,	/* 0b010 */
+		X86_SOCKET_G34,		/* 0b011 */
+		X86_SOCKET_ASB2,	/* 0b100 */
+		X86_SOCKET_C32,		/* 0b101 */
+		X86_SOCKET_UNKNOWN,	/* 0b110 */
+		X86_SOCKET_UNKNOWN	/* 0b111 */
 	},
 
 	/*
@@ -104,10 +116,14 @@
 	 */
 #define	A_SKTS_3			3
 	{
-		X86_SOCKET_UNKNOWN,	/* 0b00 */
-		X86_SOCKET_UNKNOWN,	/* 0b01 */
-		X86_SOCKET_S1g2,	/* 0b10 */
-		X86_SOCKET_UNKNOWN,	/* 0b11 */
+		X86_SOCKET_UNKNOWN,	/* 0b000 */
+		X86_SOCKET_UNKNOWN,	/* 0b001 */
+		X86_SOCKET_S1g2,	/* 0b010 */
+		X86_SOCKET_UNKNOWN,	/* 0b011 */
+		X86_SOCKET_UNKNOWN,	/* 0b100 */
+		X86_SOCKET_UNKNOWN,	/* 0b101 */
+		X86_SOCKET_UNKNOWN,	/* 0b110 */
+		X86_SOCKET_UNKNOWN	/* 0b111 */
 	}
 };
 
@@ -115,7 +131,7 @@
 	uint32_t	skt_code;
 	char		sktstr[16];
 };
-static struct amd_sktmap_s amd_sktmap[13] = {
+static struct amd_sktmap_s amd_sktmap[15] = {
 	{ X86_SOCKET_754,	"754" },
 	{ X86_SOCKET_939,	"939" },
 	{ X86_SOCKET_940,	"940" },
@@ -128,6 +144,8 @@
 	{ X86_SOCKET_AM2R2,	"AM2r2" },
 	{ X86_SOCKET_AM3,	"AM3" },
 	{ X86_SOCKET_G34,	"G34" },
+	{ X86_SOCKET_ASB2,	"ASB2" },
+	{ X86_SOCKET_C32,	"C32" },
 	{ X86_SOCKET_UNKNOWN,	"Unknown" }
 };
 
@@ -277,7 +295,7 @@
 			/* PkgType bits */
 			idx = BITX(cp.cp_ebx, 31, 28);
 
-			if (idx > 3) {
+			if (idx > 7) {
 				/* Reserved bits */
 				*skt_p = X86_SOCKET_UNKNOWN;
 			} else if (family == 0x10 &&
--- a/usr/src/uts/intel/sys/x86_archext.h	Tue Sep 15 16:03:59 2009 -0700
+++ b/usr/src/uts/intel/sys/x86_archext.h	Tue Sep 15 18:44:23 2009 -0700
@@ -550,6 +550,8 @@
 #define	X86_SOCKET_AM2R2	_X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x000200)
 #define	X86_SOCKET_AM3		_X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x000400)
 #define	X86_SOCKET_G34		_X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x000800)
+#define	X86_SOCKET_ASB2		_X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x001000)
+#define	X86_SOCKET_C32		_X86_SOCKET_MKVAL(X86_VENDOR_AMD, 0x002000)
 
 #if !defined(_ASM)