Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jan 2009 07:29:38 +0000 (UTC)
From:      Jeff Roberson <jeff@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187761 - in head: lib/libpmc sys/dev/hwpmc sys/sys
Message-ID:  <200901270729.n0R7TcJ1077516@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jeff
Date: Tue Jan 27 07:29:37 2009
New Revision: 187761
URL: http://svn.freebsd.org/changeset/base/187761

Log:
   - Add support for nehalem/corei7 cpus.  This supports all of the core
     counters defined in the reference manual.  It does not support the
     'uncore' events.
  
  Reviewed by:	jkoshy
  Sponsored by:	Nokia

Modified:
  head/lib/libpmc/libpmc.c
  head/sys/dev/hwpmc/hwpmc_core.c
  head/sys/dev/hwpmc/hwpmc_intel.c
  head/sys/dev/hwpmc/pmc_events.h
  head/sys/sys/pmc.h

Modified: head/lib/libpmc/libpmc.c
==============================================================================
--- head/lib/libpmc/libpmc.c	Tue Jan 27 02:18:42 2009	(r187760)
+++ head/lib/libpmc/libpmc.c	Tue Jan 27 07:29:37 2009	(r187761)
@@ -152,6 +152,11 @@ static const struct pmc_event_descr core
 	__PMC_EV_ALIAS_CORE2()
 };
 
+static const struct pmc_event_descr corei7_event_table[] =
+{
+	__PMC_EV_ALIAS_COREI7()
+};
+
 /*
  * PMC_MDEP_TABLE(NAME, PRIMARYCLASS, ADDITIONAL_CLASSES...)
  *
@@ -165,6 +170,7 @@ static const struct pmc_event_descr core
 PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(core, IAP, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC);
+PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(k7, K7, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(k8, K8, PMC_CLASS_TSC);
 PMC_MDEP_TABLE(p4, P4, PMC_CLASS_TSC);
@@ -194,6 +200,7 @@ PMC_CLASS_TABLE_DESC(iaf, IAF, iaf, iaf)
 PMC_CLASS_TABLE_DESC(atom, IAP, atom, iap);
 PMC_CLASS_TABLE_DESC(core, IAP, core, iap);
 PMC_CLASS_TABLE_DESC(core2, IAP, core2, iap);
+PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap);
 #endif
 #if	defined(__i386__)
 PMC_CLASS_TABLE_DESC(k7, K7, k7, k7);
@@ -448,6 +455,7 @@ static struct pmc_event_alias core2_alia
 	EV_ALIAS(NULL, NULL)
 };
 #define	atom_aliases	core2_aliases
+#define corei7_aliases	core2_aliases
 
 #define	IAF_KW_OS		"os"
 #define	IAF_KW_USR		"usr"
@@ -604,7 +612,8 @@ iap_allocate_pmc(enum pmc_event pe, char
 				return (-1);
 		} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_ATOM ||
 		    cpu_info.pm_cputype == PMC_CPU_INTEL_CORE2 ||
-		    cpu_info.pm_cputype == PMC_CPU_INTEL_CORE2EXTREME) {
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_CORE2EXTREME ||
+		    cpu_info.pm_cputype == PMC_CPU_INTEL_COREI7) {
 			if (KWMATCH(p, IAP_KW_SNOOPRESPONSE)) {
 				n = pmc_parse_mask(iap_snoopresponse_mask, p,
 				    &evmask);
@@ -2278,6 +2287,10 @@ pmc_event_names_of_class(enum pmc_class 
 			ev = core2_event_table;
 			count = PMC_EVENT_TABLE_SIZE(core2);
 			break;
+		case PMC_CPU_INTEL_COREI7:
+			ev = corei7_event_table;
+			count = PMC_EVENT_TABLE_SIZE(corei7);
+			break;
 		}
 		break;
 	case PMC_CLASS_TSC:
@@ -2462,6 +2475,11 @@ pmc_init(void)
 		pmc_class_table[n++] = &iaf_class_table_descr;
 		pmc_class_table[n]   = &core2_class_table_descr;
 		break;
+	case PMC_CPU_INTEL_COREI7:
+		PMC_MDEP_INIT(corei7);
+		pmc_class_table[n++] = &iaf_class_table_descr;
+		pmc_class_table[n]   = &corei7_class_table_descr;
+		break;
 	case PMC_CPU_INTEL_PIV:
 		PMC_MDEP_INIT(p4);
 		pmc_class_table[n] = &p4_class_table_descr;
@@ -2560,6 +2578,10 @@ _pmc_name_of_event(enum pmc_event pe, en
 			ev = core2_event_table;
 			evfence = core2_event_table + PMC_EVENT_TABLE_SIZE(core2);
 			break;
+		case PMC_CPU_INTEL_COREI7:
+			ev = corei7_event_table;
+			evfence = corei7_event_table + PMC_EVENT_TABLE_SIZE(corei7);
+			break;
 		default:	/* Unknown CPU type. */
 			break;
 		}

Modified: head/sys/dev/hwpmc/hwpmc_core.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_core.c	Tue Jan 27 02:18:42 2009	(r187760)
+++ head/sys/dev/hwpmc/hwpmc_core.c	Tue Jan 27 07:29:37 2009	(r187761)
@@ -530,9 +530,11 @@ struct iap_event_descr {
 #define	IAP_F_CC2	(1 << 1)	/* CPU: Core2 family */
 #define	IAP_F_CC2E	(1 << 2)	/* CPU: Core2 Extreme only */
 #define	IAP_F_CA	(1 << 3)	/* CPU: Atom */
-#define	IAP_F_FM	(1 << 4)	/* Fixed mask */
+#define	IAP_F_I7	(1 << 4)	/* CPU: Core i7 */
+#define	IAP_F_FM	(1 << 5)	/* Fixed mask */
 
-#define	IAP_F_ALLCPUS	(IAP_F_CC | IAP_F_CC2 | IAP_F_CC2E | IAP_F_CA)
+#define	IAP_F_ALLCPUS						\
+    (IAP_F_CC | IAP_F_CC2 | IAP_F_CC2E | IAP_F_CA | IAP_F_I7)
 
 /* Sub fields of UMASK that this event supports. */
 #define	IAP_M_CORE		(1 << 0) /* Core specificity */
@@ -569,13 +571,13 @@ static struct iap_event_descr iap_events
 
     IAPDESCR(03H_00H, 0x03, 0x00, IAP_F_FM | IAP_F_CC),
     IAPDESCR(03H_02H, 0x03, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(03H_04H, 0x03, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(03H_04H, 0x03, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(03H_08H, 0x03, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(03H_10H, 0x03, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(03H_20H, 0x03, 0x20, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(04H_00H, 0x04, 0x00, IAP_F_FM | IAP_F_CC),
-    IAPDESCR(04H_01H, 0x04, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(04H_01H, 0x04, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(04H_02H, 0x04, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(04H_08H, 0x04, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
@@ -590,8 +592,8 @@ static struct iap_event_descr iap_events
     IAPDESCR(07H_06H, 0x07, 0x06, IAP_F_FM | IAP_F_CA),
     IAPDESCR(07H_08H, 0x07, 0x08, IAP_F_FM | IAP_F_CA),
 
-    IAPDESCR(08H_01H, 0x08, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(08H_02H, 0x08, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(08H_01H, 0x08, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(08H_02H, 0x08, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(08H_04H, 0x08, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(08H_05H, 0x08, 0x05, IAP_F_FM | IAP_F_CA),
     IAPDESCR(08H_06H, 0x08, 0x06, IAP_F_FM | IAP_F_CA),
@@ -599,15 +601,15 @@ static struct iap_event_descr iap_events
     IAPDESCR(08H_08H, 0x08, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(08H_09H, 0x08, 0x09, IAP_F_FM | IAP_F_CA),
 
-    IAPDESCR(09H_01H, 0x09, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(09H_02H, 0x09, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(09H_01H, 0x09, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(09H_02H, 0x09, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
 
-    IAPDESCR(0CH_01H, 0x0C, 0x01, IAP_F_FM | IAP_F_CC2),
+    IAPDESCR(0CH_01H, 0x0C, 0x01, IAP_F_FM | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(0CH_02H, 0x0C, 0x02, IAP_F_FM | IAP_F_CC2),
     IAPDESCR(0CH_03H, 0x0C, 0x03, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(10H_00H, 0x10, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(10H_01H, 0x10, 0x01, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(10H_01H, 0x10, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7),
     IAPDESCR(10H_81H, 0x10, 0x81, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(11H_00H, 0x11, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2),
@@ -615,20 +617,20 @@ static struct iap_event_descr iap_events
     IAPDESCR(11H_81H, 0x11, 0x81, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(12H_00H, 0x12, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(12H_01H, 0x12, 0x01, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(12H_01H, 0x12, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7),
     IAPDESCR(12H_81H, 0x12, 0x81, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(13H_00H, 0x13, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(13H_01H, 0x13, 0x01, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(13H_01H, 0x13, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7),
     IAPDESCR(13H_81H, 0x13, 0x81, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(14H_00H, 0x14, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2),
-    IAPDESCR(14H_01H, 0x14, 0x01, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(14H_01H, 0x14, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7),
 
     IAPDESCR(18H_00H, 0x18, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(19H_00H, 0x19, 0x00, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(19H_01H, 0x19, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(19H_01H, 0x19, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(19H_02H, 0x19, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(21H, 0x21, IAP_M_CORE, IAP_F_ALLCPUS),
@@ -674,7 +676,7 @@ static struct iap_event_descr iap_events
     IAPDESCR(42H_10H, 0x42, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(43H_01H, 0x43, 0x01, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(43H_02H, 0x43, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(43H_02H, 0x43, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
 
     IAPDESCR(44H_02H, 0x44, 0x02, IAP_F_FM | IAP_F_CC),
 
@@ -685,8 +687,8 @@ static struct iap_event_descr iap_events
     IAPDESCR(48H_00H, 0x48, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
 
     IAPDESCR(49H_00H, 0x49, 0x00, IAP_F_FM | IAP_F_CC),
-    IAPDESCR(49H_01H, 0x49, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(49H_02H, 0x49, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(49H_01H, 0x49, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(49H_02H, 0x49, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
 
     IAPDESCR(4BH_00H, 0x4B, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
     IAPDESCR(4BH_01H, 0x4B, 0x01, IAP_F_FM | IAP_F_ALLCPUS),
@@ -760,8 +762,8 @@ static struct iap_event_descr iap_events
     IAPDESCR(7FH, 0x7F, IAP_M_CORE, IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(80H_00H, 0x80, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(80H_02H, 0x80, 0x02, IAP_F_FM | IAP_F_CA),
-    IAPDESCR(80H_03H, 0x80, 0x03, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(80H_02H, 0x80, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_I7),
+    IAPDESCR(80H_03H, 0x80, 0x03, IAP_F_FM | IAP_F_CA | IAP_F_I7),
 
     IAPDESCR(81H_00H, 0x81, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
 
@@ -816,10 +818,10 @@ static struct iap_event_descr iap_events
     IAPDESCR(ABH_02H, 0xAB, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(B0H_00H, 0xB0, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(B0H_80H, 0xB0, 0x80, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(B0H_80H, 0xB0, 0x80, IAP_F_FM | IAP_F_CA | IAP_F_I7),
 
     IAPDESCR(B1H_00H, 0xB1, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(B1H_80H, 0xB1, 0x80, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(B1H_80H, 0xB1, 0x80, IAP_F_FM | IAP_F_CA | IAP_F_I7),
 
     IAPDESCR(B3H_01H, 0xB3, 0x01, IAP_F_FM | IAP_F_ALLCPUS),
     IAPDESCR(B3H_02H, 0xB3, 0x02, IAP_F_FM | IAP_F_ALLCPUS),
@@ -835,8 +837,8 @@ static struct iap_event_descr iap_events
     IAPDESCR(B3H_A0H, 0xB3, 0xA0, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(C0H_00H, 0xC0, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(C0H_01H, 0xC0, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C0H_02H, 0xC0, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(C0H_01H, 0xC0, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C0H_02H, 0xC0, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(C0H_04H, 0xC0, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(C0H_08H, 0xC0, 0x08, IAP_F_FM | IAP_F_CC2E),
 
@@ -845,22 +847,22 @@ static struct iap_event_descr iap_events
     IAPDESCR(C1H_FEH, 0xC1, 0xFE, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(C2H_00H, 0xC2, 0x00, IAP_F_FM | IAP_F_CC),
-    IAPDESCR(C2H_01H, 0xC2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C2H_02H, 0xC2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C2H_04H, 0xC2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(C2H_01H, 0xC2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C2H_02H, 0xC2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C2H_04H, 0xC2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(C2H_07H, 0xC2, 0x07, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(C2H_08H, 0xC2, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(C2H_0FH, 0xC2, 0x0F, IAP_F_FM | IAP_F_CC2),
     IAPDESCR(C2H_10H, 0xC2, 0x10, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(C3H_00H, 0xC3, 0x00, IAP_F_FM | IAP_F_CC),
-    IAPDESCR(C3H_01H, 0xC3, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C3H_04H, 0xC3, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(C3H_01H, 0xC3, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C3H_04H, 0xC3, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
 
     IAPDESCR(C4H_00H, 0xC4, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(C4H_01H, 0xC4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C4H_02H, 0xC4, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C4H_04H, 0xC4, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(C4H_01H, 0xC4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C4H_02H, 0xC4, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C4H_04H, 0xC4, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(C4H_08H, 0xC4, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(C4H_0CH, 0xC4, 0x0C, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(C4H_0FH, 0xC4, 0x0F, IAP_F_FM | IAP_F_CA),
@@ -872,11 +874,11 @@ static struct iap_event_descr iap_events
     IAPDESCR(C6H_02H, 0xC6, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(C7H_00H, 0xC7, 0x00, IAP_F_FM | IAP_F_CC),
-    IAPDESCR(C7H_01H, 0xC7, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C7H_02H, 0xC7, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C7H_04H, 0xC7, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C7H_08H, 0xC7, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(C7H_10H, 0xC7, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(C7H_01H, 0xC7, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C7H_02H, 0xC7, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C7H_04H, 0xC7, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C7H_08H, 0xC7, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(C7H_10H, 0xC7, 0x10, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(C7H_1FH, 0xC7, 0x1F, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(C8H_00H, 0xC8, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
@@ -889,15 +891,15 @@ static struct iap_event_descr iap_events
     IAPDESCR(CAH_04H, 0xCA, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(CAH_08H, 0xCA, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
-    IAPDESCR(CBH_01H, 0xCB, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(CBH_02H, 0xCB, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(CBH_04H, 0xCB, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(CBH_08H, 0xCB, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(CBH_10H, 0xCB, 0x10, IAP_F_FM | IAP_F_CC2),
+    IAPDESCR(CBH_01H, 0xCB, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(CBH_02H, 0xCB, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(CBH_04H, 0xCB, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(CBH_08H, 0xCB, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(CBH_10H, 0xCB, 0x10, IAP_F_FM | IAP_F_CC2 | IAP_F_I7),
 
     IAPDESCR(CCH_00H, 0xCC, 0x00, IAP_F_FM | IAP_F_CC),
     IAPDESCR(CCH_01H, 0xCC, 0x01, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(CCH_02H, 0xCC, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(CCH_02H, 0xCC, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
 
     IAPDESCR(CDH_00H, 0xCD, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
     IAPDESCR(CEH_00H, 0xCE, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
@@ -905,20 +907,20 @@ static struct iap_event_descr iap_events
 
     IAPDESCR(D0H_00H, 0xD0, 0x00, IAP_F_FM | IAP_F_CC),
 
-    IAPDESCR(D2H_01H, 0xD2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(D2H_02H, 0xD2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(D2H_04H, 0xD2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(D2H_08H, 0xD2, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
-    IAPDESCR(D2H_0FH, 0xD2, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(D2H_01H, 0xD2, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(D2H_02H, 0xD2, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(D2H_04H, 0xD2, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(D2H_08H, 0xD2, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
+    IAPDESCR(D2H_0FH, 0xD2, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(D2H_10H, 0xD2, 0x10, IAP_F_FM | IAP_F_CC2E),
 
-    IAPDESCR(D4H_01H, 0xD4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(D4H_01H, 0xD4, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(D4H_02H, 0xD4, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(D4H_04H, 0xD4, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(D4H_08H, 0xD4, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(D4H_0FH, 0xD4, 0x0F, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
-    IAPDESCR(D5H_01H, 0xD5, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
+    IAPDESCR(D5H_01H, 0xD5, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_CC2 | IAP_F_I7),
     IAPDESCR(D5H_02H, 0xD5, 0x02, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(D5H_04H, 0xD5, 0x04, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
     IAPDESCR(D5H_08H, 0xD5, 0x08, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
@@ -951,7 +953,7 @@ static struct iap_event_descr iap_events
     IAPDESCR(DCH_1FH, 0xDC, 0x1F, IAP_F_FM | IAP_F_CA | IAP_F_CC2),
 
     IAPDESCR(E0H_00H, 0xE0, 0x00, IAP_F_FM | IAP_F_CC | IAP_F_CC2),
-    IAPDESCR(E0H_01H, 0xE0, 0x01, IAP_F_FM | IAP_F_CA),
+    IAPDESCR(E0H_01H, 0xE0, 0x01, IAP_F_FM | IAP_F_CA | IAP_F_I7),
 
     IAPDESCR(E2H_00H, 0xE2, 0x00, IAP_F_FM | IAP_F_CC),
     IAPDESCR(E4H_00H, 0xE4, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
@@ -960,7 +962,244 @@ static struct iap_event_descr iap_events
     IAPDESCR(E6H_01H, 0xE6, 0x01, IAP_F_FM | IAP_F_CA),
 
     IAPDESCR(F0H_00H, 0xF0, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
-    IAPDESCR(F8H_00H, 0xF8, 0x00, IAP_F_FM | IAP_F_ALLCPUS)
+    IAPDESCR(F8H_00H, 0xF8, 0x00, IAP_F_FM | IAP_F_ALLCPUS),
+
+    /* Added with nehalem. */
+    IAPDESCR(02H_01H, 0x02, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(03H_01H, 0x03, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(05H_01H, 0x05, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(05H_02H, 0x05, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(05H_03H, 0x05, 0x03, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(06H_01H, 0x06, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(06H_02H, 0x06, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(06H_04H, 0x06, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(06H_08H, 0x06, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(06H_0FH, 0x06, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(08H_10H, 0x08, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(08H_20H, 0x08, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(08H_40H, 0x08, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(08H_80H, 0x08, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(09H_04H, 0x09, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(09H_08H, 0x09, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0BH_01H, 0x0B, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0BH_02H, 0x0B, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0EH_01H, 0x0E, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0EH_02H, 0x0E, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0FH_02H, 0x0F, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0FH_08H, 0x0F, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0FH_10H, 0x0F, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(0FH_20H, 0x0F, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_02H, 0x10, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_04H, 0x10, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_08H, 0x10, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_10H, 0x10, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_20H, 0x10, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_40H, 0x10, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(10H_80H, 0x10, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_02H, 0x12, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_04H, 0x12, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_08H, 0x12, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_10H, 0x12, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_20H, 0x12, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(12H_40H, 0x12, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(13H_02H, 0x13, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(13H_04H, 0x13, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(13H_07H, 0x13, 0x07, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(14H_02H, 0x14, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(17H_01H, 0x17, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(18H_01H, 0x18, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(1DH_01H, 0x1D, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(1DH_02H, 0x1D, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(1DH_04H, 0x1D, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(1EH_01H, 0x1E, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_01H, 0x24, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_02H, 0x24, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_03H, 0x24, 0x03, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_04H, 0x24, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_08H, 0x24, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_0CH, 0x24, 0x0C, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_10H, 0x24, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_20H, 0x24, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_30H, 0x24, 0x30, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_40H, 0x24, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_80H, 0x24, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_AAH, 0x24, 0xAA, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_C0H, 0x24, 0xC0, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(24H_FFH, 0x24, 0xFF, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_01H, 0x26, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_02H, 0x26, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_04H, 0x26, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_08H, 0x26, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_0FH, 0x26, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_10H, 0x26, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_20H, 0x26, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_40H, 0x26, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_80H, 0x26, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_F0H, 0x26, 0xF0, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(26H_FFH, 0x26, 0xFF, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_01H, 0x27, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_02H, 0x27, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_04H, 0x27, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_08H, 0x27, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_0EH, 0x27, 0x0E, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_0FH, 0x27, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_10H, 0x27, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_20H, 0x27, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_40H, 0x27, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_80H, 0x27, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_E0H, 0x27, 0xE0, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(27H_F0H, 0x27, 0xF0, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(28H_01H, 0x28, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(28H_02H, 0x28, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(28H_04H, 0x28, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(28H_08H, 0x28, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(28H_0FH, 0x28, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(3DH_01H, 0x3D, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(40H_01H, 0x40, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(40H_02H, 0x40, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(40H_04H, 0x40, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(40H_08H, 0x40, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(40H_0FH, 0x40, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(41H_01H, 0x41, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(41H_02H, 0x41, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(41H_04H, 0x41, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(41H_08H, 0x41, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(41H_0FH, 0x41, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(42H_01H, 0x42, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(42H_02H, 0x42, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(42H_04H, 0x42, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(42H_08H, 0x42, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(48H_02H, 0x48, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(49H_10H, 0x49, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(49H_20H, 0x49, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(49H_40H, 0x49, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(49H_80H, 0x49, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4BH_08H, 0x4B, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4CH_01H, 0x4C, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4DH_01H, 0x4D, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4EH_01H, 0x4E, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4EH_02H, 0x4E, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4EH_04H, 0x4E, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4FH_02H, 0x4F, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4FH_04H, 0x4F, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(4FH_08H, 0x4F, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(51H_01H, 0x51, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(51H_02H, 0x51, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(51H_04H, 0x51, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(51H_08H, 0x51, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(52H_01H, 0x52, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(53H_01H, 0x53, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(60H_01H, 0x60, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(60H_02H, 0x60, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(60H_04H, 0x60, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(60H_08H, 0x60, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(63H_01H, 0x63, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(63H_02H, 0x63, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(6CH_01H, 0x6C, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(80H_01H, 0x80, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(80H_04H, 0x80, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(80H_10H, 0x80, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(81H_01H, 0x81, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(81H_02H, 0x81, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(82H_01H, 0x82, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(83H_01H, 0x83, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_01H, 0x85, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_02H, 0x85, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_04H, 0x85, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_10H, 0x85, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_20H, 0x85, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_40H, 0x85, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(85H_80H, 0x85, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(87H_01H, 0x87, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(87H_02H, 0x87, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(87H_04H, 0x87, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(87H_08H, 0x87, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(87H_0FH, 0x87, 0x0F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_01H, 0x88, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_02H, 0x88, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_04H, 0x88, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_07H, 0x88, 0x07, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_08H, 0x88, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_10H, 0x88, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_20H, 0x88, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_30H, 0x88, 0x30, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(88H_40H, 0x88, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_01H, 0x89, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_02H, 0x89, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_04H, 0x89, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_07H, 0x89, 0x07, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_08H, 0x89, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_10H, 0x89, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_20H, 0x89, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_30H, 0x89, 0x30, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_40H, 0x89, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(89H_7FH, 0x89, 0x7F, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_01H, 0xA2, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_02H, 0xA2, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_04H, 0xA2, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_08H, 0xA2, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_10H, 0xA2, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_20H, 0xA2, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_40H, 0xA2, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A2H_80H, 0xA2, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A6H_01H, 0xA6, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A7H_01H, 0xA7, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(A8H_01H, 0xA8, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_01H, 0xB0, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_02H, 0xB0, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_04H, 0xB0, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_08H, 0xB0, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_20H, 0xB0, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B0H_40H, 0xB0, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_01H, 0xB1, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_02H, 0xB1, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_04H, 0xB1, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_08H, 0xB1, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_10H, 0xB1, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_20H, 0xB1, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B1H_40H, 0xB1, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B2H_01H, 0xB2, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B7H_01H, 0xB7, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B8H_01H, 0xB8, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B8H_02H, 0xB8, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(B8H_04H, 0xB8, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(BAH_01H, 0xBA, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(BAH_02H, 0xBA, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(C3H_02H, 0xC3, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(C3H_10H, 0xC3, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(C5H_02H, 0xC5, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(C8H_20H, 0xC8, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(CBH_40H, 0xCB, 0x40, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(CBH_80H, 0xCB, 0x80, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(CCH_03H, 0xCC, 0x03, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(D0H_01H, 0xD0, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(D1H_02H, 0xD1, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(D1H_04H, 0xD1, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(D1H_08H, 0xD1, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(DBH_01H, 0xDB, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(E4H_01H, 0xE4, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(E5H_01H, 0xE5, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F3H_04H, 0xF3, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F3H_08H, 0xF3, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F3H_10H, 0xF3, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F3H_20H, 0xF3, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F4H_01H, 0xF4, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F4H_02H, 0xF4, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F4H_04H, 0xF4, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F4H_08H, 0xF4, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F4H_10H, 0xF4, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F6H_01H, 0xF6, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F7H_01H, 0xF7, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F7H_02H, 0xF7, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F7H_04H, 0xF7, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(F8H_01H, 0xF8, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_01H, 0xFD, 0x01, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_02H, 0xFD, 0x02, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_04H, 0xFD, 0x04, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_08H, 0xFD, 0x08, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_10H, 0xFD, 0x10, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_20H, 0xFD, 0x20, IAP_F_FM | IAP_F_I7),
+    IAPDESCR(FDH_40H, 0xFD, 0x40, IAP_F_FM | IAP_F_I7),
 };
 
 static const int niap_events = sizeof(iap_events) / sizeof(iap_events[0]);
@@ -1113,6 +1352,9 @@ iap_allocate_pmc(int cpu, int ri, struct
 	case PMC_CPU_INTEL_CORE2EXTREME:
 		cpuflag = IAP_F_CC2 | IAP_F_CC2E;
 		break;
+	case PMC_CPU_INTEL_COREI7:
+		cpuflag = IAP_F_I7;
+		break;
 	}
 
 	for (n = 0, ie = iap_events; n < niap_events; n++, ie++)

Modified: head/sys/dev/hwpmc/hwpmc_intel.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_intel.c	Tue Jan 27 02:18:42 2009	(r187760)
+++ head/sys/dev/hwpmc/hwpmc_intel.c	Tue Jan 27 07:29:37 2009	(r187761)
@@ -130,6 +130,10 @@ pmc_intel_initialize(void)
 			cputype = PMC_CPU_INTEL_ATOM;
 			nclasses = 3;
 			break;
+		case 0x1A:
+			cputype = PMC_CPU_INTEL_COREI7;
+			nclasses = 3;
+			break;
 		}
 		break;
 #if	defined(__i386__) || defined(__amd64__)
@@ -169,6 +173,7 @@ pmc_intel_initialize(void)
 	case PMC_CPU_INTEL_CORE:
 	case PMC_CPU_INTEL_CORE2:
 	case PMC_CPU_INTEL_CORE2EXTREME:
+	case PMC_CPU_INTEL_COREI7:
 		error = pmc_core_initialize(pmc_mdep, ncpus);
 		break;
 

Modified: head/sys/dev/hwpmc/pmc_events.h
==============================================================================
--- head/sys/dev/hwpmc/pmc_events.h	Tue Jan 27 02:18:42 2009	(r187760)
+++ head/sys/dev/hwpmc/pmc_events.h	Tue Jan 27 07:29:37 2009	(r187761)
@@ -738,10 +738,245 @@ __PMC_EV(IAP, EVENT_E4H_00H)			\
 __PMC_EV(IAP, EVENT_E6H_00H)			\
 __PMC_EV(IAP, EVENT_E6H_01H)			\
 __PMC_EV(IAP, EVENT_F0H_00H)			\
-__PMC_EV(IAP, EVENT_F8H_00H)
+__PMC_EV(IAP, EVENT_F8H_00H)			\
+__PMC_EV(IAP, EVENT_02H_01H)			\
+__PMC_EV(IAP, EVENT_03H_01H)			\
+__PMC_EV(IAP, EVENT_05H_01H)			\
+__PMC_EV(IAP, EVENT_05H_02H)			\
+__PMC_EV(IAP, EVENT_05H_03H)			\
+__PMC_EV(IAP, EVENT_06H_01H)			\
+__PMC_EV(IAP, EVENT_06H_02H)			\
+__PMC_EV(IAP, EVENT_06H_04H)			\
+__PMC_EV(IAP, EVENT_06H_08H)			\
+__PMC_EV(IAP, EVENT_06H_0FH)			\
+__PMC_EV(IAP, EVENT_08H_10H)			\
+__PMC_EV(IAP, EVENT_08H_20H)			\
+__PMC_EV(IAP, EVENT_08H_40H)			\
+__PMC_EV(IAP, EVENT_08H_80H)			\
+__PMC_EV(IAP, EVENT_09H_04H)			\
+__PMC_EV(IAP, EVENT_09H_08H)			\
+__PMC_EV(IAP, EVENT_0BH_01H)			\
+__PMC_EV(IAP, EVENT_0BH_02H)			\
+__PMC_EV(IAP, EVENT_0EH_01H)			\
+__PMC_EV(IAP, EVENT_0EH_02H)			\
+__PMC_EV(IAP, EVENT_0FH_02H)			\
+__PMC_EV(IAP, EVENT_0FH_08H)			\
+__PMC_EV(IAP, EVENT_0FH_10H)			\
+__PMC_EV(IAP, EVENT_0FH_20H)			\
+__PMC_EV(IAP, EVENT_10H_02H)			\
+__PMC_EV(IAP, EVENT_10H_04H)			\
+__PMC_EV(IAP, EVENT_10H_08H)			\
+__PMC_EV(IAP, EVENT_10H_10H)			\
+__PMC_EV(IAP, EVENT_10H_20H)			\
+__PMC_EV(IAP, EVENT_10H_40H)			\
+__PMC_EV(IAP, EVENT_10H_80H)			\
+__PMC_EV(IAP, EVENT_12H_02H)			\
+__PMC_EV(IAP, EVENT_12H_04H)			\
+__PMC_EV(IAP, EVENT_12H_08H)			\
+__PMC_EV(IAP, EVENT_12H_10H)			\
+__PMC_EV(IAP, EVENT_12H_20H)			\
+__PMC_EV(IAP, EVENT_12H_40H)			\
+__PMC_EV(IAP, EVENT_13H_02H)			\
+__PMC_EV(IAP, EVENT_13H_04H)			\
+__PMC_EV(IAP, EVENT_13H_07H)			\
+__PMC_EV(IAP, EVENT_14H_02H)			\
+__PMC_EV(IAP, EVENT_17H_01H)			\
+__PMC_EV(IAP, EVENT_18H_01H)			\
+__PMC_EV(IAP, EVENT_1DH_01H)			\
+__PMC_EV(IAP, EVENT_1DH_02H)			\
+__PMC_EV(IAP, EVENT_1DH_04H)			\
+__PMC_EV(IAP, EVENT_1EH_01H)			\
+__PMC_EV(IAP, EVENT_24H_01H)			\
+__PMC_EV(IAP, EVENT_24H_02H)			\
+__PMC_EV(IAP, EVENT_24H_03H)			\
+__PMC_EV(IAP, EVENT_24H_04H)			\
+__PMC_EV(IAP, EVENT_24H_08H)			\
+__PMC_EV(IAP, EVENT_24H_0CH)			\
+__PMC_EV(IAP, EVENT_24H_10H)			\
+__PMC_EV(IAP, EVENT_24H_20H)			\
+__PMC_EV(IAP, EVENT_24H_30H)			\
+__PMC_EV(IAP, EVENT_24H_40H)			\
+__PMC_EV(IAP, EVENT_24H_80H)			\
+__PMC_EV(IAP, EVENT_24H_AAH)			\
+__PMC_EV(IAP, EVENT_24H_C0H)			\
+__PMC_EV(IAP, EVENT_24H_FFH)			\
+__PMC_EV(IAP, EVENT_26H_01H)			\
+__PMC_EV(IAP, EVENT_26H_02H)			\
+__PMC_EV(IAP, EVENT_26H_04H)			\
+__PMC_EV(IAP, EVENT_26H_08H)			\
+__PMC_EV(IAP, EVENT_26H_0FH)			\
+__PMC_EV(IAP, EVENT_26H_10H)			\
+__PMC_EV(IAP, EVENT_26H_20H)			\
+__PMC_EV(IAP, EVENT_26H_40H)			\
+__PMC_EV(IAP, EVENT_26H_80H)			\
+__PMC_EV(IAP, EVENT_26H_F0H)			\
+__PMC_EV(IAP, EVENT_26H_FFH)			\
+__PMC_EV(IAP, EVENT_27H_01H)			\
+__PMC_EV(IAP, EVENT_27H_02H)			\
+__PMC_EV(IAP, EVENT_27H_04H)			\
+__PMC_EV(IAP, EVENT_27H_08H)			\
+__PMC_EV(IAP, EVENT_27H_0EH)			\
+__PMC_EV(IAP, EVENT_27H_0FH)			\
+__PMC_EV(IAP, EVENT_27H_10H)			\
+__PMC_EV(IAP, EVENT_27H_20H)			\
+__PMC_EV(IAP, EVENT_27H_40H)			\
+__PMC_EV(IAP, EVENT_27H_80H)			\
+__PMC_EV(IAP, EVENT_27H_E0H)			\
+__PMC_EV(IAP, EVENT_27H_F0H)			\
+__PMC_EV(IAP, EVENT_28H_01H)			\
+__PMC_EV(IAP, EVENT_28H_02H)			\
+__PMC_EV(IAP, EVENT_28H_04H)			\
+__PMC_EV(IAP, EVENT_28H_08H)			\
+__PMC_EV(IAP, EVENT_28H_0FH)			\
+__PMC_EV(IAP, EVENT_3DH_01H)			\
+__PMC_EV(IAP, EVENT_40H_01H)			\
+__PMC_EV(IAP, EVENT_40H_02H)			\
+__PMC_EV(IAP, EVENT_40H_04H)			\
+__PMC_EV(IAP, EVENT_40H_08H)			\
+__PMC_EV(IAP, EVENT_40H_0FH)			\
+__PMC_EV(IAP, EVENT_41H_01H)			\
+__PMC_EV(IAP, EVENT_41H_02H)			\
+__PMC_EV(IAP, EVENT_41H_04H)			\
+__PMC_EV(IAP, EVENT_41H_08H)			\
+__PMC_EV(IAP, EVENT_41H_0FH)			\
+__PMC_EV(IAP, EVENT_42H_01H)			\
+__PMC_EV(IAP, EVENT_42H_02H)			\
+__PMC_EV(IAP, EVENT_42H_04H)			\
+__PMC_EV(IAP, EVENT_42H_08H)			\
+__PMC_EV(IAP, EVENT_48H_02H)			\
+__PMC_EV(IAP, EVENT_49H_10H)			\
+__PMC_EV(IAP, EVENT_49H_20H)			\
+__PMC_EV(IAP, EVENT_49H_40H)			\
+__PMC_EV(IAP, EVENT_49H_80H)			\
+__PMC_EV(IAP, EVENT_4BH_08H)			\
+__PMC_EV(IAP, EVENT_4CH_01H)			\
+__PMC_EV(IAP, EVENT_4DH_01H)			\
+__PMC_EV(IAP, EVENT_4EH_01H)			\
+__PMC_EV(IAP, EVENT_4EH_02H)			\
+__PMC_EV(IAP, EVENT_4EH_04H)			\
+__PMC_EV(IAP, EVENT_4FH_02H)			\
+__PMC_EV(IAP, EVENT_4FH_04H)			\
+__PMC_EV(IAP, EVENT_4FH_08H)			\
+__PMC_EV(IAP, EVENT_51H_01H)			\
+__PMC_EV(IAP, EVENT_51H_02H)			\
+__PMC_EV(IAP, EVENT_51H_04H)			\
+__PMC_EV(IAP, EVENT_51H_08H)			\
+__PMC_EV(IAP, EVENT_52H_01H)			\
+__PMC_EV(IAP, EVENT_53H_01H)			\
+__PMC_EV(IAP, EVENT_60H_01H)			\
+__PMC_EV(IAP, EVENT_60H_02H)			\
+__PMC_EV(IAP, EVENT_60H_04H)			\
+__PMC_EV(IAP, EVENT_60H_08H)			\
+__PMC_EV(IAP, EVENT_63H_01H)			\
+__PMC_EV(IAP, EVENT_63H_02H)			\
+__PMC_EV(IAP, EVENT_6CH_01H)			\
+__PMC_EV(IAP, EVENT_80H_01H)			\
+__PMC_EV(IAP, EVENT_80H_04H)			\
+__PMC_EV(IAP, EVENT_80H_10H)			\
+__PMC_EV(IAP, EVENT_81H_01H)			\
+__PMC_EV(IAP, EVENT_81H_02H)			\
+__PMC_EV(IAP, EVENT_82H_01H)			\
+__PMC_EV(IAP, EVENT_83H_01H)			\
+__PMC_EV(IAP, EVENT_85H_01H)			\
+__PMC_EV(IAP, EVENT_85H_02H)			\
+__PMC_EV(IAP, EVENT_85H_04H)			\
+__PMC_EV(IAP, EVENT_85H_10H)			\
+__PMC_EV(IAP, EVENT_85H_20H)			\
+__PMC_EV(IAP, EVENT_85H_40H)			\
+__PMC_EV(IAP, EVENT_85H_80H)			\
+__PMC_EV(IAP, EVENT_87H_01H)			\
+__PMC_EV(IAP, EVENT_87H_02H)			\
+__PMC_EV(IAP, EVENT_87H_04H)			\
+__PMC_EV(IAP, EVENT_87H_08H)			\
+__PMC_EV(IAP, EVENT_87H_0FH)			\
+__PMC_EV(IAP, EVENT_88H_01H)			\
+__PMC_EV(IAP, EVENT_88H_02H)			\
+__PMC_EV(IAP, EVENT_88H_04H)			\
+__PMC_EV(IAP, EVENT_88H_07H)			\
+__PMC_EV(IAP, EVENT_88H_08H)			\
+__PMC_EV(IAP, EVENT_88H_10H)			\
+__PMC_EV(IAP, EVENT_88H_20H)			\
+__PMC_EV(IAP, EVENT_88H_30H)			\
+__PMC_EV(IAP, EVENT_88H_40H)			\
+__PMC_EV(IAP, EVENT_89H_01H)			\
+__PMC_EV(IAP, EVENT_89H_02H)			\
+__PMC_EV(IAP, EVENT_89H_04H)			\
+__PMC_EV(IAP, EVENT_89H_07H)			\
+__PMC_EV(IAP, EVENT_89H_08H)			\
+__PMC_EV(IAP, EVENT_89H_10H)			\
+__PMC_EV(IAP, EVENT_89H_20H)			\
+__PMC_EV(IAP, EVENT_89H_30H)			\
+__PMC_EV(IAP, EVENT_89H_40H)			\
+__PMC_EV(IAP, EVENT_89H_7FH)			\
+__PMC_EV(IAP, EVENT_A2H_01H)			\
+__PMC_EV(IAP, EVENT_A2H_02H)			\
+__PMC_EV(IAP, EVENT_A2H_04H)			\
+__PMC_EV(IAP, EVENT_A2H_08H)			\
+__PMC_EV(IAP, EVENT_A2H_10H)			\
+__PMC_EV(IAP, EVENT_A2H_20H)			\
+__PMC_EV(IAP, EVENT_A2H_40H)			\
+__PMC_EV(IAP, EVENT_A2H_80H)			\
+__PMC_EV(IAP, EVENT_A6H_01H)			\
+__PMC_EV(IAP, EVENT_A7H_01H)			\
+__PMC_EV(IAP, EVENT_A8H_01H)			\
+__PMC_EV(IAP, EVENT_B0H_01H)			\
+__PMC_EV(IAP, EVENT_B0H_02H)			\
+__PMC_EV(IAP, EVENT_B0H_04H)			\
+__PMC_EV(IAP, EVENT_B0H_08H)			\
+__PMC_EV(IAP, EVENT_B0H_20H)			\
+__PMC_EV(IAP, EVENT_B0H_40H)			\
+__PMC_EV(IAP, EVENT_B1H_01H)			\
+__PMC_EV(IAP, EVENT_B1H_02H)			\
+__PMC_EV(IAP, EVENT_B1H_04H)			\
+__PMC_EV(IAP, EVENT_B1H_08H)			\
+__PMC_EV(IAP, EVENT_B1H_10H)			\
+__PMC_EV(IAP, EVENT_B1H_20H)			\
+__PMC_EV(IAP, EVENT_B1H_40H)			\
+__PMC_EV(IAP, EVENT_B2H_01H)			\
+__PMC_EV(IAP, EVENT_B7H_01H)			\
+__PMC_EV(IAP, EVENT_B8H_01H)			\
+__PMC_EV(IAP, EVENT_B8H_02H)			\
+__PMC_EV(IAP, EVENT_B8H_04H)			\
+__PMC_EV(IAP, EVENT_BAH_01H)			\
+__PMC_EV(IAP, EVENT_BAH_02H)			\
+__PMC_EV(IAP, EVENT_C3H_02H)			\
+__PMC_EV(IAP, EVENT_C3H_10H)			\
+__PMC_EV(IAP, EVENT_C5H_02H)			\
+__PMC_EV(IAP, EVENT_C8H_20H)			\
+__PMC_EV(IAP, EVENT_CBH_40H)			\
+__PMC_EV(IAP, EVENT_CBH_80H)			\
+__PMC_EV(IAP, EVENT_CCH_03H)			\
+__PMC_EV(IAP, EVENT_D0H_01H)			\
+__PMC_EV(IAP, EVENT_D1H_02H)			\
+__PMC_EV(IAP, EVENT_D1H_04H)			\
+__PMC_EV(IAP, EVENT_D1H_08H)			\
+__PMC_EV(IAP, EVENT_DBH_01H)			\
+__PMC_EV(IAP, EVENT_E4H_01H)			\
+__PMC_EV(IAP, EVENT_E5H_01H)			\
+__PMC_EV(IAP, EVENT_F3H_04H)			\
+__PMC_EV(IAP, EVENT_F3H_08H)			\
+__PMC_EV(IAP, EVENT_F3H_10H)			\
+__PMC_EV(IAP, EVENT_F3H_20H)			\
+__PMC_EV(IAP, EVENT_F4H_01H)			\
+__PMC_EV(IAP, EVENT_F4H_02H)			\
+__PMC_EV(IAP, EVENT_F4H_04H)			\
+__PMC_EV(IAP, EVENT_F4H_08H)			\
+__PMC_EV(IAP, EVENT_F4H_10H)			\
+__PMC_EV(IAP, EVENT_F6H_01H)			\
+__PMC_EV(IAP, EVENT_F7H_01H)			\
+__PMC_EV(IAP, EVENT_F7H_02H)			\
+__PMC_EV(IAP, EVENT_F7H_04H)			\
+__PMC_EV(IAP, EVENT_F8H_01H)			\
+__PMC_EV(IAP, EVENT_FDH_01H)			\
+__PMC_EV(IAP, EVENT_FDH_02H)			\
+__PMC_EV(IAP, EVENT_FDH_04H)			\
+__PMC_EV(IAP, EVENT_FDH_08H)			\
+__PMC_EV(IAP, EVENT_FDH_10H)			\
+__PMC_EV(IAP, EVENT_FDH_20H)			\
+__PMC_EV(IAP, EVENT_FDH_40H)
 
 #define	PMC_EV_IAP_FIRST	PMC_EV_IAP_EVENT_02H_81H
-#define	PMC_EV_IAP_LAST		PMC_EV_IAP_EVENT_F8H_00H
+#define	PMC_EV_IAP_LAST		PMC_EV_IAP_EVENT_FDH_40H
 
 /*
  * Map "architectural" event names to event ids.
@@ -1378,6 +1613,309 @@ __PMC_EV_ALIAS("UOPS_RETIRED.STD_STA",		
 __PMC_EV_ALIAS("X87_OPS_RETIRED.ANY",		IAP_EVENT_C1H_FEH)	\
 __PMC_EV_ALIAS("X87_OPS_RETIRED.FXCH",		IAP_EVENT_C1H_01H)
 
+/*
+ * Aliases for Core i7 PMC events.
+ */
+#define	__PMC_EV_ALIAS_COREI7()						\
+__PMC_EV_ALIAS_INTEL_ARCHITECTURAL()					\
+__PMC_EV_ALIAS("SB_FORWARD.ANY",			IAP_EVENT_02H_01H) \
+__PMC_EV_ALIAS("LOAD_BLOCK.STD",			IAP_EVENT_03H_01H) \
+__PMC_EV_ALIAS("LOAD_BLOCK.ADDRESS_OFFSET",		IAP_EVENT_03H_04H) \
+__PMC_EV_ALIAS("SB_DRAIN.CYCLES",			IAP_EVENT_04H_01H) \
+__PMC_EV_ALIAS("MISALIGN_MEM_REF.LOAD",			IAP_EVENT_05H_01H) \
+__PMC_EV_ALIAS("MISALIGN_MEM_REF.STORE",		IAP_EVENT_05H_02H) \
+__PMC_EV_ALIAS("MISALIGN_MEM_REF.ANY",			IAP_EVENT_05H_03H) \
+__PMC_EV_ALIAS("STORE_BLOCKS.NOT_STA",			IAP_EVENT_06H_01H) \
+__PMC_EV_ALIAS("STORE_BLOCKS.STA",			IAP_EVENT_06H_02H) \
+__PMC_EV_ALIAS("STORE_BLOCKS.AT_RET",			IAP_EVENT_06H_04H) \
+__PMC_EV_ALIAS("STORE_BLOCKS.L1D_BLOCK",		IAP_EVENT_06H_08H) \
+__PMC_EV_ALIAS("STORE_BLOCKS.ANY",			IAP_EVENT_06H_0FH) \
+__PMC_EV_ALIAS("PARTIAL_ADDRESS_ALIAS",			IAP_EVENT_07H_01H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.ANY",			IAP_EVENT_08H_01H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.WALK_COMPLETED",	IAP_EVENT_08H_02H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.STLB_HIT",		IAP_EVENT_08H_10H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.PDE_MISS",		IAP_EVENT_08H_20H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.PDP_MISS",		IAP_EVENT_08H_40H) \
+__PMC_EV_ALIAS("DTLB_LOAD_MISSES.LARGE_WALK_COMPLETED",	IAP_EVENT_08H_80H) \
+__PMC_EV_ALIAS("MEMORY_DISAMBIGURATION.RESET",		IAP_EVENT_09H_01H) \
+__PMC_EV_ALIAS("MEMORY_DISAMBIGURATION.SUCCESS",	IAP_EVENT_09H_02H) \
+__PMC_EV_ALIAS("MEMORY_DISAMBIGURATION.WATCHDOG",	IAP_EVENT_09H_04H) \
+__PMC_EV_ALIAS("MEMORY_DISAMBIGURATION.WATCH_CYCLES",	IAP_EVENT_09H_08H) \
+__PMC_EV_ALIAS("MEM_INST_RETIRED.LOADS",		IAP_EVENT_0BH_01H) \
+__PMC_EV_ALIAS("MEM_INST_RETIRED.STORES",		IAP_EVENT_0BH_02H) \
+__PMC_EV_ALIAS("MEM_STORE_RETIRED.DTLB_MISS",		IAP_EVENT_0CH_01H) \
+__PMC_EV_ALIAS("UOPS_ISSUED.ANY",			IAP_EVENT_0EH_01H) \
+__PMC_EV_ALIAS("UOPS_ISSUED.FUSED",			IAP_EVENT_0EH_02H) \
+__PMC_EV_ALIAS("MEM_UNCORE_RETIRED.OTHER_CORE_L2_HITM",	IAP_EVENT_0FH_02H) \
+__PMC_EV_ALIAS("MEM_UNCORE_RETIRED.REMOTE_CACHE_LOCAL_HOME_HIT", IAP_EVENT_0FH_08H) \
+__PMC_EV_ALIAS("MEM_UNCORE_RETIRED.REMOTE_DRAM",	IAP_EVENT_0FH_10H) \
+__PMC_EV_ALIAS("MEM_UNCORE_RETIRED.LOCAL_DRAM",		IAP_EVENT_0FH_20H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.X87",			IAP_EVENT_10H_01H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.MMX",			IAP_EVENT_10H_02H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE_FP",		IAP_EVENT_10H_04H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE2_INTEGER",		IAP_EVENT_10H_08H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE_FP_PACKED",		IAP_EVENT_10H_10H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE_FP_SCALAR",		IAP_EVENT_10H_20H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE_SINGLE_PRECISION",	IAP_EVENT_10H_40H) \
+__PMC_EV_ALIAS("FP_COMP_OPS_EXE.SSE_DOUBLE_PRECISION",	IAP_EVENT_10H_80H) \
+__PMC_EV_ALIAS("SIMD_INT_128.PACKED_MPY",		IAP_EVENT_12H_01H) \
+__PMC_EV_ALIAS("SIMD_INT_128.PACKED_SHIFT",		IAP_EVENT_12H_02H) \
+__PMC_EV_ALIAS("SIMD_INT_128.PACK",			IAP_EVENT_12H_04H) \
+__PMC_EV_ALIAS("SIMD_INT_128.UNPACK",			IAP_EVENT_12H_08H) \
+__PMC_EV_ALIAS("SIMD_INT_128.PACKED_LOGICAL",		IAP_EVENT_12H_10H) \
+__PMC_EV_ALIAS("SIMD_INT_128.PACKED_ARITH",		IAP_EVENT_12H_20H) \
+__PMC_EV_ALIAS("SIMD_INT_128.SHUFFLE_MOVE",		IAP_EVENT_12H_40H) \
+__PMC_EV_ALIAS("LOAD_DISPATCH.RS",			IAP_EVENT_13H_01H) \
+__PMC_EV_ALIAS("LOAD_DISPATCH.RS_DELAYED",		IAP_EVENT_13H_02H) \
+__PMC_EV_ALIAS("LOAD_DISPATCH.MOB",			IAP_EVENT_13H_04H) \
+__PMC_EV_ALIAS("LOAD_DISPATCH.ANY",			IAP_EVENT_13H_07H) \
+__PMC_EV_ALIAS("ARITH.CYCLES_DIV_BUSY",			IAP_EVENT_14H_01H) \
+__PMC_EV_ALIAS("ARITH.MUL",				IAP_EVENT_14H_02H) \
+__PMC_EV_ALIAS("INST_QUEUE_WRITES",			IAP_EVENT_17H_01H) \
+__PMC_EV_ALIAS("INST_DECODED.DEC0",			IAP_EVENT_18H_01H) \
+__PMC_EV_ALIAS("TWO_UOP_INSTS_DECODED",			IAP_EVENT_19H_01H) \
+__PMC_EV_ALIAS("HW_INT.RCV",				IAP_EVENT_1DH_01H) \
+__PMC_EV_ALIAS("HW_INT.CYCLES_MASKED",			IAP_EVENT_1DH_02H) \
+__PMC_EV_ALIAS("HW_INT.CYCLES_PENDING_AND_MASKED",	IAP_EVENT_1DH_04H) \
+__PMC_EV_ALIAS("INST_QUEUE_WRITE_CYCLES",		IAP_EVENT_1EH_01H) \
+__PMC_EV_ALIAS("L2_RQSTS.LD_HIT",			IAP_EVENT_24H_01H) \
+__PMC_EV_ALIAS("L2_RQSTS.LD_MISS",			IAP_EVENT_24H_02H) \
+__PMC_EV_ALIAS("L2_RQSTS.LOADS",			IAP_EVENT_24H_03H) \
+__PMC_EV_ALIAS("L2_RQSTS.RFO_HIT",			IAP_EVENT_24H_04H) \
+__PMC_EV_ALIAS("L2_RQSTS.RFO_MISS",			IAP_EVENT_24H_08H) \
+__PMC_EV_ALIAS("L2_RQSTS.RFOS",				IAP_EVENT_24H_0CH) \
+__PMC_EV_ALIAS("L2_RQSTS.IFETCH_HIT",			IAP_EVENT_24H_10H) \
+__PMC_EV_ALIAS("L2_RQSTS.IFETCH_MISS",			IAP_EVENT_24H_20H) \
+__PMC_EV_ALIAS("L2_RQSTS.IFETCHES",			IAP_EVENT_24H_30H) \
+__PMC_EV_ALIAS("L2_RQSTS.PREFETCH_HIT",			IAP_EVENT_24H_40H) \
+__PMC_EV_ALIAS("L2_RQSTS.PREFETCH_MISS",		IAP_EVENT_24H_80H) \
+__PMC_EV_ALIAS("L2_RQSTS.PREFETCHES",			IAP_EVENT_24H_C0H) \
+__PMC_EV_ALIAS("L2_RQSTS.MISS",				IAP_EVENT_24H_AAH) \
+__PMC_EV_ALIAS("L2_RQSTS.REFERENCES",			IAP_EVENT_24H_FFH) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.DEMAND.I_STATE",		IAP_EVENT_26H_01H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.DEMAND.S_STATE",		IAP_EVENT_26H_02H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.DEMAND.E_STATE",		IAP_EVENT_26H_04H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.DEMAND.M_STATE",		IAP_EVENT_26H_08H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.DEMAND.MESI",		IAP_EVENT_26H_0FH) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.PREFETCH.I_STATE",	IAP_EVENT_26H_10H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.PREFETCH.S_STATE",	IAP_EVENT_26H_20H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.PREFETCH.E_STATE",	IAP_EVENT_26H_40H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.PREFETCH.M_STATE",	IAP_EVENT_26H_80H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.PREFETCH.MESI",		IAP_EVENT_26H_F0H) \
+__PMC_EV_ALIAS("L2_DATA_RQSTS.ANY",			IAP_EVENT_26H_FFH) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.I_STATE",			IAP_EVENT_27H_01H) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.S_STATE",			IAP_EVENT_27H_02H) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.E_STATE",			IAP_EVENT_27H_04H) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.M_STATE",			IAP_EVENT_27H_08H) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.HIT",			IAP_EVENT_27H_0EH) \
+__PMC_EV_ALIAS("L2_WRITE.RFO.MESI",			IAP_EVENT_27H_0FH) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.I_STATE",			IAP_EVENT_27H_10H) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.S_STATE",			IAP_EVENT_27H_20H) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.E_STATE",			IAP_EVENT_27H_40H) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.M_STATE",			IAP_EVENT_27H_80H) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.HIT",			IAP_EVENT_27H_E0H) \
+__PMC_EV_ALIAS("L2_WRITE.LOCK.MESI",			IAP_EVENT_27H_F0H) \
+__PMC_EV_ALIAS("L1D_WB_L2.I_STATE",			IAP_EVENT_28H_01H) \
+__PMC_EV_ALIAS("L1D_WB_L2.S_STATE",			IAP_EVENT_28H_02H) \
+__PMC_EV_ALIAS("L1D_WB_L2.E_STATE",			IAP_EVENT_28H_04H) \
+__PMC_EV_ALIAS("L1D_WB_L2.M_STATE",			IAP_EVENT_28H_08H) \
+__PMC_EV_ALIAS("L1D_WB_L2.MESI",			IAP_EVENT_28H_0FH) \
+__PMC_EV_ALIAS("LONGEST_LAT_CACHE.REFERENCE",		IAP_EVENT_2EH_4FH) \
+__PMC_EV_ALIAS("LONGEST_LAT_CACHE.MISS",		IAP_EVENT_2EH_41H) \
+__PMC_EV_ALIAS("CPU_CLK_UNHALTED.THREAD_P",		IAP_EVENT_3CH_00H) \
+__PMC_EV_ALIAS("CPU_CLK_UNHALTED.REF_P",		IAP_EVENT_3CH_01H) \
+__PMC_EV_ALIAS("UOPS_DECODED.DEC0",			IAP_EVENT_3DH_01H) \
+__PMC_EV_ALIAS("L1D_CACHE_LD.I_STATE",			IAP_EVENT_40H_01H) \
+__PMC_EV_ALIAS("L1D_CACHE_LD.S_STATE",			IAP_EVENT_40H_02H) \
+__PMC_EV_ALIAS("L1D_CACHE_LD.E_STATE",			IAP_EVENT_40H_04H) \
+__PMC_EV_ALIAS("L1D_CACHE_LD.M_STATE",			IAP_EVENT_40H_08H) \
+__PMC_EV_ALIAS("L1D_CACHE_LD.MESI",			IAP_EVENT_40H_0FH) \
+__PMC_EV_ALIAS("L1D_CACHE_ST.I_STATE",			IAP_EVENT_41H_01H) \
+__PMC_EV_ALIAS("L1D_CACHE_ST.S_STATE",			IAP_EVENT_41H_02H) \
+__PMC_EV_ALIAS("L1D_CACHE_ST.E_STATE",			IAP_EVENT_41H_04H) \
+__PMC_EV_ALIAS("L1D_CACHE_ST.M_STATE",			IAP_EVENT_41H_08H) \
+__PMC_EV_ALIAS("L1D_CACHE_ST.MESI",			IAP_EVENT_41H_0FH) \
+__PMC_EV_ALIAS("L1D_CACHE_LOCK.HIT",			IAP_EVENT_42H_01H) \
+__PMC_EV_ALIAS("L1D_CACHE_LOCK.S_STATE",		IAP_EVENT_42H_02H) \
+__PMC_EV_ALIAS("L1D_CACHE_LOCK.E_STATE",		IAP_EVENT_42H_04H) \
+__PMC_EV_ALIAS("L1D_CACHE_LOCK.M_STATE",		IAP_EVENT_42H_08H) \
+__PMC_EV_ALIAS("L1D_ALL_REF.ANY",			IAP_EVENT_43H_01H) \
+__PMC_EV_ALIAS("L1D_ALL_REF.CACHEABLE",			IAP_EVENT_43H_02H) \
+__PMC_EV_ALIAS("L1D_PEND_MISS.LOAD_BUFFERS_FULL",	IAP_EVENT_48H_02H) \
+__PMC_EV_ALIAS("DTLB_MISSES.ANY",			IAP_EVENT_49H_01H) \
+__PMC_EV_ALIAS("DTLB_MISSES.WALK_COMPLETED",		IAP_EVENT_49H_02H) \
+__PMC_EV_ALIAS("DTLB_MISSES.STLB_HIT",			IAP_EVENT_49H_10H) \
+__PMC_EV_ALIAS("DTLB_MISSES.PDE_MISS",			IAP_EVENT_49H_20H) \
+__PMC_EV_ALIAS("DTLB_MISSES.PDP_MISS",			IAP_EVENT_49H_40H) \
+__PMC_EV_ALIAS("DTLB_MISSES.LARGE_WALK_COMPLETED",	IAP_EVENT_49H_80H) \
+__PMC_EV_ALIAS("SSE_MEM_EXEC.NTA",			IAP_EVENT_4BH_01H) \
+__PMC_EV_ALIAS("SSE_MEM_EXEC.STREAMING_STORES",		IAP_EVENT_4BH_08H) \

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901270729.n0R7TcJ1077516>