16b138c7bSAndi Kleen[
26b138c7bSAndi Kleen    {
362201368SIan Rogers        "BriefDescription": "Number of qfclks",
46b138c7bSAndi Kleen        "EventCode": "0x14",
56b138c7bSAndi Kleen        "EventName": "UNC_Q_CLOCKTICKS",
66b138c7bSAndi Kleen        "PerPkg": "1",
762201368SIan Rogers        "PublicDescription": "Counts the number of clocks in the QPI LL.  This clock runs at 1/8th the GT/s speed of the QPI link.  For example, a 8GT/s link will have qfclk or 1GHz.  JKT does not support dynamic link speeds, so this frequency is fixed.",
86b138c7bSAndi Kleen        "Unit": "QPI LL"
96b138c7bSAndi Kleen    },
106b138c7bSAndi Kleen    {
1162201368SIan Rogers        "BriefDescription": "Count of CTO Events",
1262201368SIan Rogers        "EventCode": "0x38",
1362201368SIan Rogers        "EventName": "UNC_Q_CTO_COUNT",
146b138c7bSAndi Kleen        "PerPkg": "1",
1562201368SIan Rogers        "PublicDescription": "Counts the number of CTO (cluster trigger outs) events that were asserted across the two slots.  If both slots trigger in a given cycle, the event will increment by 2.  You can use edge detect to count the number of cases when both events triggered.",
166b138c7bSAndi Kleen        "Unit": "QPI LL"
176b138c7bSAndi Kleen    },
186b138c7bSAndi Kleen    {
1962201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - Egress Credits",
2062201368SIan Rogers        "EventCode": "0x13",
2162201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_CREDITS",
226b138c7bSAndi Kleen        "PerPkg": "1",
23d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because there were not enough Egress credits.  Had there been enough credits, the spawn would have worked as the RBT bit was set and the RBT tag matched.",
246b138c7bSAndi Kleen        "UMask": "0x2",
256b138c7bSAndi Kleen        "Unit": "QPI LL"
266b138c7bSAndi Kleen    },
276b138c7bSAndi Kleen    {
2862201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - Egress and RBT Miss",
2962201368SIan Rogers        "EventCode": "0x13",
3062201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_CREDITS_MISS",
3162201368SIan Rogers        "PerPkg": "1",
32d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because the RBT tag did not match and there weren't enough Egress credits.   The valid bit was set.",
3362201368SIan Rogers        "UMask": "0x20",
3462201368SIan Rogers        "Unit": "QPI LL"
3562201368SIan Rogers    },
3662201368SIan Rogers    {
3762201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - Egress and RBT Invalid",
3862201368SIan Rogers        "EventCode": "0x13",
3962201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_CREDITS_RBT",
4062201368SIan Rogers        "PerPkg": "1",
41d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because there were not enough Egress credits AND the RBT bit was not set, but the RBT tag matched.",
4262201368SIan Rogers        "UMask": "0x8",
4362201368SIan Rogers        "Unit": "QPI LL"
4462201368SIan Rogers    },
4562201368SIan Rogers    {
4662201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - Egress and RBT Miss, Invalid",
4762201368SIan Rogers        "EventCode": "0x13",
4862201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_CREDITS_RBT_MISS",
4962201368SIan Rogers        "PerPkg": "1",
50d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because the RBT tag did not match, the valid bit was not set and there weren't enough Egress credits.",
5162201368SIan Rogers        "UMask": "0x80",
5262201368SIan Rogers        "Unit": "QPI LL"
5362201368SIan Rogers    },
5462201368SIan Rogers    {
5562201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - RBT Miss",
5662201368SIan Rogers        "EventCode": "0x13",
5762201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_MISS",
5862201368SIan Rogers        "PerPkg": "1",
59d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because the RBT tag did not match although the valid bit was set and there were enough Egress credits.",
6062201368SIan Rogers        "UMask": "0x10",
6162201368SIan Rogers        "Unit": "QPI LL"
6262201368SIan Rogers    },
6362201368SIan Rogers    {
6462201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - RBT Invalid",
6562201368SIan Rogers        "EventCode": "0x13",
6662201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_RBT_HIT",
6762201368SIan Rogers        "PerPkg": "1",
68d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because the route-back table (RBT) specified that the transaction should not trigger a direct2core transaction.  This is common for IO transactions.  There were enough Egress credits and the RBT tag matched but the valid bit was not set.",
6962201368SIan Rogers        "UMask": "0x4",
7062201368SIan Rogers        "Unit": "QPI LL"
7162201368SIan Rogers    },
7262201368SIan Rogers    {
7362201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Failure - RBT Miss and Invalid",
7462201368SIan Rogers        "EventCode": "0x13",
7562201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.FAILURE_RBT_MISS",
7662201368SIan Rogers        "PerPkg": "1",
77d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn failed because the RBT tag did not match and the valid bit was not set although there were enough Egress credits.",
7862201368SIan Rogers        "UMask": "0x40",
7962201368SIan Rogers        "Unit": "QPI LL"
8062201368SIan Rogers    },
8162201368SIan Rogers    {
8262201368SIan Rogers        "BriefDescription": "Direct 2 Core Spawning; Spawn Success",
8362201368SIan Rogers        "EventCode": "0x13",
8462201368SIan Rogers        "EventName": "UNC_Q_DIRECT2CORE.SUCCESS_RBT_HIT",
8562201368SIan Rogers        "PerPkg": "1",
86d2aaf040SIan Rogers        "PublicDescription": "Counts the number of DRS packets that we attempted to do direct2core on.  There are 4 mutually exclusive filters.  Filter [0] can be used to get successful spawns, while [1:3] provide the different failure cases.  Note that this does not count packets that are not candidates for Direct2Core.  The only candidates for Direct2Core are DRS packets destined for Cbos.; The spawn was successful.  There were sufficient credits, the RBT valid bit was set and there was an RBT tag match.  The message was marked to spawn direct2core.",
8762201368SIan Rogers        "UMask": "0x1",
8862201368SIan Rogers        "Unit": "QPI LL"
8962201368SIan Rogers    },
9062201368SIan Rogers    {
9162201368SIan Rogers        "BriefDescription": "Cycles in L1",
9262201368SIan Rogers        "EventCode": "0x12",
9362201368SIan Rogers        "EventName": "UNC_Q_L1_POWER_CYCLES",
9462201368SIan Rogers        "PerPkg": "1",
9562201368SIan Rogers        "PublicDescription": "Number of QPI qfclk cycles spent in L1 power mode.  L1 is a mode that totally shuts down a QPI link.  Use edge detect to count the number of instances when the QPI link entered L1.  Link power states are per link and per direction, so for example the Tx direction could be in one state while Rx was in another. Because L1 totally shuts down the link, it takes a good amount of time to exit this mode.",
9662201368SIan Rogers        "Unit": "QPI LL"
9762201368SIan Rogers    },
9862201368SIan Rogers    {
99*8ee37818SIan Rogers        "EventCode": "0x38",
100*8ee37818SIan Rogers        "EventName": "UNC_Q_MATCH_MASK",
101*8ee37818SIan Rogers        "PerPkg": "1",
102*8ee37818SIan Rogers        "Unit": "QPI LL"
103*8ee37818SIan Rogers    },
104*8ee37818SIan Rogers    {
105*8ee37818SIan Rogers        "EventCode": "0x38",
106*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.AnyDataC",
107*8ee37818SIan Rogers        "PerPkg": "1",
108*8ee37818SIan Rogers        "Unit": "QPI LL"
109*8ee37818SIan Rogers    },
110*8ee37818SIan Rogers    {
111*8ee37818SIan Rogers        "EventCode": "0x38",
112*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.AnyResp",
113*8ee37818SIan Rogers        "PerPkg": "1",
114*8ee37818SIan Rogers        "Unit": "QPI LL"
115*8ee37818SIan Rogers    },
116*8ee37818SIan Rogers    {
117*8ee37818SIan Rogers        "EventCode": "0x38",
118*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.AnyResp11flits",
119*8ee37818SIan Rogers        "PerPkg": "1",
120*8ee37818SIan Rogers        "Unit": "QPI LL"
121*8ee37818SIan Rogers    },
122*8ee37818SIan Rogers    {
123*8ee37818SIan Rogers        "EventCode": "0x38",
124*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.AnyResp9flits",
125*8ee37818SIan Rogers        "PerPkg": "1",
126*8ee37818SIan Rogers        "Unit": "QPI LL"
127*8ee37818SIan Rogers    },
128*8ee37818SIan Rogers    {
129*8ee37818SIan Rogers        "EventCode": "0x38",
130*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_E",
131*8ee37818SIan Rogers        "PerPkg": "1",
132*8ee37818SIan Rogers        "Unit": "QPI LL"
133*8ee37818SIan Rogers    },
134*8ee37818SIan Rogers    {
135*8ee37818SIan Rogers        "EventCode": "0x38",
136*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_E_Cmp",
137*8ee37818SIan Rogers        "PerPkg": "1",
138*8ee37818SIan Rogers        "Unit": "QPI LL"
139*8ee37818SIan Rogers    },
140*8ee37818SIan Rogers    {
141*8ee37818SIan Rogers        "EventCode": "0x38",
142*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_E_FrcAckCnflt",
143*8ee37818SIan Rogers        "PerPkg": "1",
144*8ee37818SIan Rogers        "Unit": "QPI LL"
145*8ee37818SIan Rogers    },
146*8ee37818SIan Rogers    {
147*8ee37818SIan Rogers        "EventCode": "0x38",
148*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_F",
149*8ee37818SIan Rogers        "PerPkg": "1",
150*8ee37818SIan Rogers        "Unit": "QPI LL"
151*8ee37818SIan Rogers    },
152*8ee37818SIan Rogers    {
153*8ee37818SIan Rogers        "EventCode": "0x38",
154*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_F_Cmp",
155*8ee37818SIan Rogers        "PerPkg": "1",
156*8ee37818SIan Rogers        "Unit": "QPI LL"
157*8ee37818SIan Rogers    },
158*8ee37818SIan Rogers    {
159*8ee37818SIan Rogers        "EventCode": "0x38",
160*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_F_FrcAckCnflt",
161*8ee37818SIan Rogers        "PerPkg": "1",
162*8ee37818SIan Rogers        "Unit": "QPI LL"
163*8ee37818SIan Rogers    },
164*8ee37818SIan Rogers    {
165*8ee37818SIan Rogers        "EventCode": "0x38",
166*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.DataC_M",
167*8ee37818SIan Rogers        "PerPkg": "1",
168*8ee37818SIan Rogers        "Unit": "QPI LL"
169*8ee37818SIan Rogers    },
170*8ee37818SIan Rogers    {
171*8ee37818SIan Rogers        "EventCode": "0x38",
172*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.WbEData",
173*8ee37818SIan Rogers        "PerPkg": "1",
174*8ee37818SIan Rogers        "Unit": "QPI LL"
175*8ee37818SIan Rogers    },
176*8ee37818SIan Rogers    {
177*8ee37818SIan Rogers        "EventCode": "0x38",
178*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.WbIData",
179*8ee37818SIan Rogers        "PerPkg": "1",
180*8ee37818SIan Rogers        "Unit": "QPI LL"
181*8ee37818SIan Rogers    },
182*8ee37818SIan Rogers    {
183*8ee37818SIan Rogers        "EventCode": "0x38",
184*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.DRS.WbSData",
185*8ee37818SIan Rogers        "PerPkg": "1",
186*8ee37818SIan Rogers        "Unit": "QPI LL"
187*8ee37818SIan Rogers    },
188*8ee37818SIan Rogers    {
189*8ee37818SIan Rogers        "EventCode": "0x38",
190*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.AnyReq",
191*8ee37818SIan Rogers        "PerPkg": "1",
192*8ee37818SIan Rogers        "Unit": "QPI LL"
193*8ee37818SIan Rogers    },
194*8ee37818SIan Rogers    {
195*8ee37818SIan Rogers        "EventCode": "0x38",
196*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.AnyResp",
197*8ee37818SIan Rogers        "PerPkg": "1",
198*8ee37818SIan Rogers        "Unit": "QPI LL"
199*8ee37818SIan Rogers    },
200*8ee37818SIan Rogers    {
201*8ee37818SIan Rogers        "EventCode": "0x38",
202*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespFwd",
203*8ee37818SIan Rogers        "PerPkg": "1",
204*8ee37818SIan Rogers        "Unit": "QPI LL"
205*8ee37818SIan Rogers    },
206*8ee37818SIan Rogers    {
207*8ee37818SIan Rogers        "EventCode": "0x38",
208*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespFwdI",
209*8ee37818SIan Rogers        "PerPkg": "1",
210*8ee37818SIan Rogers        "Unit": "QPI LL"
211*8ee37818SIan Rogers    },
212*8ee37818SIan Rogers    {
213*8ee37818SIan Rogers        "EventCode": "0x38",
214*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespFwdIWb",
215*8ee37818SIan Rogers        "PerPkg": "1",
216*8ee37818SIan Rogers        "Unit": "QPI LL"
217*8ee37818SIan Rogers    },
218*8ee37818SIan Rogers    {
219*8ee37818SIan Rogers        "EventCode": "0x38",
220*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespFwdS",
221*8ee37818SIan Rogers        "PerPkg": "1",
222*8ee37818SIan Rogers        "Unit": "QPI LL"
223*8ee37818SIan Rogers    },
224*8ee37818SIan Rogers    {
225*8ee37818SIan Rogers        "EventCode": "0x38",
226*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespFwdSWb",
227*8ee37818SIan Rogers        "PerPkg": "1",
228*8ee37818SIan Rogers        "Unit": "QPI LL"
229*8ee37818SIan Rogers    },
230*8ee37818SIan Rogers    {
231*8ee37818SIan Rogers        "EventCode": "0x38",
232*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespIWb",
233*8ee37818SIan Rogers        "PerPkg": "1",
234*8ee37818SIan Rogers        "Unit": "QPI LL"
235*8ee37818SIan Rogers    },
236*8ee37818SIan Rogers    {
237*8ee37818SIan Rogers        "EventCode": "0x38",
238*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.HOM.RespSWb",
239*8ee37818SIan Rogers        "PerPkg": "1",
240*8ee37818SIan Rogers        "Unit": "QPI LL"
241*8ee37818SIan Rogers    },
242*8ee37818SIan Rogers    {
243*8ee37818SIan Rogers        "EventCode": "0x38",
244*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCB.AnyInt",
245*8ee37818SIan Rogers        "PerPkg": "1",
246*8ee37818SIan Rogers        "Unit": "QPI LL"
247*8ee37818SIan Rogers    },
248*8ee37818SIan Rogers    {
249*8ee37818SIan Rogers        "EventCode": "0x38",
250*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCB.AnyMsg",
251*8ee37818SIan Rogers        "PerPkg": "1",
252*8ee37818SIan Rogers        "Unit": "QPI LL"
253*8ee37818SIan Rogers    },
254*8ee37818SIan Rogers    {
255*8ee37818SIan Rogers        "EventCode": "0x38",
256*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCB.AnyMsg11flits",
257*8ee37818SIan Rogers        "PerPkg": "1",
258*8ee37818SIan Rogers        "Unit": "QPI LL"
259*8ee37818SIan Rogers    },
260*8ee37818SIan Rogers    {
261*8ee37818SIan Rogers        "EventCode": "0x38",
262*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCB.AnyMsg9flits",
263*8ee37818SIan Rogers        "PerPkg": "1",
264*8ee37818SIan Rogers        "Unit": "QPI LL"
265*8ee37818SIan Rogers    },
266*8ee37818SIan Rogers    {
267*8ee37818SIan Rogers        "EventCode": "0x38",
268*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCS.AnyMsg1or2flits",
269*8ee37818SIan Rogers        "PerPkg": "1",
270*8ee37818SIan Rogers        "Unit": "QPI LL"
271*8ee37818SIan Rogers    },
272*8ee37818SIan Rogers    {
273*8ee37818SIan Rogers        "EventCode": "0x38",
274*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCS.AnyMsg3flits",
275*8ee37818SIan Rogers        "PerPkg": "1",
276*8ee37818SIan Rogers        "Unit": "QPI LL"
277*8ee37818SIan Rogers    },
278*8ee37818SIan Rogers    {
279*8ee37818SIan Rogers        "EventCode": "0x38",
280*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NCS.NcRd",
281*8ee37818SIan Rogers        "PerPkg": "1",
282*8ee37818SIan Rogers        "Unit": "QPI LL"
283*8ee37818SIan Rogers    },
284*8ee37818SIan Rogers    {
285*8ee37818SIan Rogers        "EventCode": "0x38",
286*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.NDR.AnyCmp",
287*8ee37818SIan Rogers        "PerPkg": "1",
288*8ee37818SIan Rogers        "Unit": "QPI LL"
289*8ee37818SIan Rogers    },
290*8ee37818SIan Rogers    {
291*8ee37818SIan Rogers        "EventCode": "0x38",
292*8ee37818SIan Rogers        "EventName": "UNC_Q_MESSAGE.SNP.AnySnp",
293*8ee37818SIan Rogers        "PerPkg": "1",
294*8ee37818SIan Rogers        "Unit": "QPI LL"
295*8ee37818SIan Rogers    },
296*8ee37818SIan Rogers    {
29762201368SIan Rogers        "BriefDescription": "Cycles in L0p",
29862201368SIan Rogers        "EventCode": "0x10",
29962201368SIan Rogers        "EventName": "UNC_Q_RxL0P_POWER_CYCLES",
30062201368SIan Rogers        "PerPkg": "1",
30162201368SIan Rogers        "PublicDescription": "Number of QPI qfclk cycles spent in L0p power mode.  L0p is a mode where we disable 1/2 of the QPI lanes, decreasing our bandwidth in order to save power.  It increases snoop and data transfer latencies and decreases overall bandwidth.  This mode can be very useful in NUMA optimized workloads that largely only utilize QPI for snoops and their responses.  Use edge detect to count the number of instances when the QPI link entered L0p.  Link power states are per link and per direction, so for example the Tx direction could be in one state while Rx was in another.",
30262201368SIan Rogers        "Unit": "QPI LL"
30362201368SIan Rogers    },
30462201368SIan Rogers    {
30562201368SIan Rogers        "BriefDescription": "Cycles in L0",
30662201368SIan Rogers        "EventCode": "0xf",
30762201368SIan Rogers        "EventName": "UNC_Q_RxL0_POWER_CYCLES",
30862201368SIan Rogers        "PerPkg": "1",
30962201368SIan Rogers        "PublicDescription": "Number of QPI qfclk cycles spent in L0 power mode in the Link Layer.  L0 is the default mode which provides the highest performance with the most power.  Use edge detect to count the number of instances that the link entered L0.  Link power states are per link and per direction, so for example the Tx direction could be in one state while Rx was in another.  The phy layer  sometimes leaves L0 for training, which will not be captured by this event.",
31062201368SIan Rogers        "Unit": "QPI LL"
31162201368SIan Rogers    },
31262201368SIan Rogers    {
31362201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Bypassed",
31462201368SIan Rogers        "EventCode": "0x9",
31562201368SIan Rogers        "EventName": "UNC_Q_RxL_BYPASSED",
31662201368SIan Rogers        "PerPkg": "1",
317d2aaf040SIan Rogers        "PublicDescription": "Counts the number of times that an incoming flit was able to bypass the flit buffer and pass directly across the BGF and into the Egress.  This is a latency optimization, and should generally be the common case.  If this value is less than the number of flits transferred, it implies that there was queueing getting onto the ring, and thus the transactions saw higher latency.",
31862201368SIan Rogers        "Unit": "QPI LL"
31962201368SIan Rogers    },
32062201368SIan Rogers    {
32162201368SIan Rogers        "BriefDescription": "CRC Errors Detected; LinkInit",
32262201368SIan Rogers        "EventCode": "0x3",
32362201368SIan Rogers        "EventName": "UNC_Q_RxL_CRC_ERRORS.LINK_INIT",
32462201368SIan Rogers        "PerPkg": "1",
32562201368SIan Rogers        "PublicDescription": "Number of CRC errors detected in the QPI Agent.  Each QPI flit incorporates 8 bits of CRC for error detection.  This counts the number of flits where the CRC was able to detect an error.  After an error has been detected, the QPI agent will send a request to the transmitting socket to resend the flit (as well as any flits that came after it).; CRC errors detected during link initialization.",
32662201368SIan Rogers        "UMask": "0x1",
32762201368SIan Rogers        "Unit": "QPI LL"
32862201368SIan Rogers    },
32962201368SIan Rogers    {
33062201368SIan Rogers        "BriefDescription": "CRC Errors Detected; Normal Operations",
33162201368SIan Rogers        "EventCode": "0x3",
33262201368SIan Rogers        "EventName": "UNC_Q_RxL_CRC_ERRORS.NORMAL_OP",
33362201368SIan Rogers        "PerPkg": "1",
33462201368SIan Rogers        "PublicDescription": "Number of CRC errors detected in the QPI Agent.  Each QPI flit incorporates 8 bits of CRC for error detection.  This counts the number of flits where the CRC was able to detect an error.  After an error has been detected, the QPI agent will send a request to the transmitting socket to resend the flit (as well as any flits that came after it).; CRC errors detected during normal operation.",
33562201368SIan Rogers        "UMask": "0x2",
33662201368SIan Rogers        "Unit": "QPI LL"
33762201368SIan Rogers    },
33862201368SIan Rogers    {
33962201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; DRS",
34062201368SIan Rogers        "EventCode": "0x1e",
34162201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.DRS",
34262201368SIan Rogers        "PerPkg": "1",
34362201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the DRS message class.",
34462201368SIan Rogers        "UMask": "0x1",
34562201368SIan Rogers        "Unit": "QPI LL"
34662201368SIan Rogers    },
34762201368SIan Rogers    {
34862201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; HOM",
34962201368SIan Rogers        "EventCode": "0x1e",
35062201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.HOM",
35162201368SIan Rogers        "PerPkg": "1",
35262201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the HOM message class.",
35362201368SIan Rogers        "UMask": "0x8",
35462201368SIan Rogers        "Unit": "QPI LL"
35562201368SIan Rogers    },
35662201368SIan Rogers    {
35762201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; NCB",
35862201368SIan Rogers        "EventCode": "0x1e",
35962201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.NCB",
36062201368SIan Rogers        "PerPkg": "1",
36162201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the NCB message class.",
36262201368SIan Rogers        "UMask": "0x2",
36362201368SIan Rogers        "Unit": "QPI LL"
36462201368SIan Rogers    },
36562201368SIan Rogers    {
36662201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; NCS",
36762201368SIan Rogers        "EventCode": "0x1e",
36862201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.NCS",
36962201368SIan Rogers        "PerPkg": "1",
37062201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the NCS message class.",
37162201368SIan Rogers        "UMask": "0x4",
37262201368SIan Rogers        "Unit": "QPI LL"
37362201368SIan Rogers    },
37462201368SIan Rogers    {
37562201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; NDR",
37662201368SIan Rogers        "EventCode": "0x1e",
37762201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.NDR",
37862201368SIan Rogers        "PerPkg": "1",
37962201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the NDR message class.",
38062201368SIan Rogers        "UMask": "0x20",
38162201368SIan Rogers        "Unit": "QPI LL"
38262201368SIan Rogers    },
38362201368SIan Rogers    {
38462201368SIan Rogers        "BriefDescription": "VN0 Credit Consumed; SNP",
38562201368SIan Rogers        "EventCode": "0x1e",
38662201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN0.SNP",
38762201368SIan Rogers        "PerPkg": "1",
38862201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN0 credit was consumed (i.e. message uses a VN0 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN0 credit for the SNP message class.",
38962201368SIan Rogers        "UMask": "0x10",
39062201368SIan Rogers        "Unit": "QPI LL"
39162201368SIan Rogers    },
39262201368SIan Rogers    {
39362201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; DRS",
39462201368SIan Rogers        "EventCode": "0x39",
39562201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.DRS",
39662201368SIan Rogers        "PerPkg": "1",
39762201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the DRS message class.",
39862201368SIan Rogers        "UMask": "0x1",
39962201368SIan Rogers        "Unit": "QPI LL"
40062201368SIan Rogers    },
40162201368SIan Rogers    {
40262201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; HOM",
40362201368SIan Rogers        "EventCode": "0x39",
40462201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.HOM",
40562201368SIan Rogers        "PerPkg": "1",
40662201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the HOM message class.",
40762201368SIan Rogers        "UMask": "0x8",
40862201368SIan Rogers        "Unit": "QPI LL"
40962201368SIan Rogers    },
41062201368SIan Rogers    {
41162201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; NCB",
41262201368SIan Rogers        "EventCode": "0x39",
41362201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.NCB",
41462201368SIan Rogers        "PerPkg": "1",
41562201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the NCB message class.",
41662201368SIan Rogers        "UMask": "0x2",
41762201368SIan Rogers        "Unit": "QPI LL"
41862201368SIan Rogers    },
41962201368SIan Rogers    {
42062201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; NCS",
42162201368SIan Rogers        "EventCode": "0x39",
42262201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.NCS",
42362201368SIan Rogers        "PerPkg": "1",
42462201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the NCS message class.",
42562201368SIan Rogers        "UMask": "0x4",
42662201368SIan Rogers        "Unit": "QPI LL"
42762201368SIan Rogers    },
42862201368SIan Rogers    {
42962201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; NDR",
43062201368SIan Rogers        "EventCode": "0x39",
43162201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.NDR",
43262201368SIan Rogers        "PerPkg": "1",
43362201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the NDR message class.",
43462201368SIan Rogers        "UMask": "0x20",
43562201368SIan Rogers        "Unit": "QPI LL"
43662201368SIan Rogers    },
43762201368SIan Rogers    {
43862201368SIan Rogers        "BriefDescription": "VN1 Credit Consumed; SNP",
43962201368SIan Rogers        "EventCode": "0x39",
44062201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VN1.SNP",
44162201368SIan Rogers        "PerPkg": "1",
44262201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VN1 credit was consumed (i.e. message uses a VN1 credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.; VN1 credit for the SNP message class.",
44362201368SIan Rogers        "UMask": "0x10",
44462201368SIan Rogers        "Unit": "QPI LL"
44562201368SIan Rogers    },
44662201368SIan Rogers    {
44762201368SIan Rogers        "BriefDescription": "VNA Credit Consumed",
44862201368SIan Rogers        "EventCode": "0x1d",
44962201368SIan Rogers        "EventName": "UNC_Q_RxL_CREDITS_CONSUMED_VNA",
45062201368SIan Rogers        "PerPkg": "1",
45162201368SIan Rogers        "PublicDescription": "Counts the number of times that an RxQ VNA credit was consumed (i.e. message uses a VNA credit for the Rx Buffer).  This includes packets that went through the RxQ and those that were bypasssed.",
45262201368SIan Rogers        "Unit": "QPI LL"
45362201368SIan Rogers    },
45462201368SIan Rogers    {
45562201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty",
45662201368SIan Rogers        "EventCode": "0xa",
45762201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE",
45862201368SIan Rogers        "PerPkg": "1",
45962201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.",
46062201368SIan Rogers        "Unit": "QPI LL"
46162201368SIan Rogers    },
46262201368SIan Rogers    {
46362201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - DRS; for VN0",
46462201368SIan Rogers        "EventCode": "0xF",
46562201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_DRS.VN0",
46662201368SIan Rogers        "PerPkg": "1",
46762201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors DRS flits only.",
46862201368SIan Rogers        "UMask": "0x1",
46962201368SIan Rogers        "Unit": "QPI LL"
47062201368SIan Rogers    },
47162201368SIan Rogers    {
47262201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - DRS; for VN1",
47362201368SIan Rogers        "EventCode": "0xF",
47462201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_DRS.VN1",
47562201368SIan Rogers        "PerPkg": "1",
47662201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors DRS flits only.",
47762201368SIan Rogers        "UMask": "0x2",
47862201368SIan Rogers        "Unit": "QPI LL"
47962201368SIan Rogers    },
48062201368SIan Rogers    {
48162201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - HOM; for VN0",
48262201368SIan Rogers        "EventCode": "0x12",
48362201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_HOM.VN0",
48462201368SIan Rogers        "PerPkg": "1",
48562201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors HOM flits only.",
48662201368SIan Rogers        "UMask": "0x1",
48762201368SIan Rogers        "Unit": "QPI LL"
48862201368SIan Rogers    },
48962201368SIan Rogers    {
49062201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - HOM; for VN1",
49162201368SIan Rogers        "EventCode": "0x12",
49262201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_HOM.VN1",
49362201368SIan Rogers        "PerPkg": "1",
49462201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors HOM flits only.",
49562201368SIan Rogers        "UMask": "0x2",
49662201368SIan Rogers        "Unit": "QPI LL"
49762201368SIan Rogers    },
49862201368SIan Rogers    {
49962201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NCB; for VN0",
50062201368SIan Rogers        "EventCode": "0x10",
50162201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NCB.VN0",
50262201368SIan Rogers        "PerPkg": "1",
50362201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NCB flits only.",
50462201368SIan Rogers        "UMask": "0x1",
50562201368SIan Rogers        "Unit": "QPI LL"
50662201368SIan Rogers    },
50762201368SIan Rogers    {
50862201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NCB; for VN1",
50962201368SIan Rogers        "EventCode": "0x10",
51062201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NCB.VN1",
51162201368SIan Rogers        "PerPkg": "1",
51262201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NCB flits only.",
51362201368SIan Rogers        "UMask": "0x2",
51462201368SIan Rogers        "Unit": "QPI LL"
51562201368SIan Rogers    },
51662201368SIan Rogers    {
51762201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NCS; for VN0",
51862201368SIan Rogers        "EventCode": "0x11",
51962201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NCS.VN0",
52062201368SIan Rogers        "PerPkg": "1",
52162201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NCS flits only.",
52262201368SIan Rogers        "UMask": "0x1",
52362201368SIan Rogers        "Unit": "QPI LL"
52462201368SIan Rogers    },
52562201368SIan Rogers    {
52662201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NCS; for VN1",
52762201368SIan Rogers        "EventCode": "0x11",
52862201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NCS.VN1",
52962201368SIan Rogers        "PerPkg": "1",
53062201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NCS flits only.",
53162201368SIan Rogers        "UMask": "0x2",
53262201368SIan Rogers        "Unit": "QPI LL"
53362201368SIan Rogers    },
53462201368SIan Rogers    {
53562201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NDR; for VN0",
53662201368SIan Rogers        "EventCode": "0x14",
53762201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NDR.VN0",
53862201368SIan Rogers        "PerPkg": "1",
53962201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NDR flits only.",
54062201368SIan Rogers        "UMask": "0x1",
54162201368SIan Rogers        "Unit": "QPI LL"
54262201368SIan Rogers    },
54362201368SIan Rogers    {
54462201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - NDR; for VN1",
54562201368SIan Rogers        "EventCode": "0x14",
54662201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_NDR.VN1",
54762201368SIan Rogers        "PerPkg": "1",
54862201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors NDR flits only.",
54962201368SIan Rogers        "UMask": "0x2",
55062201368SIan Rogers        "Unit": "QPI LL"
55162201368SIan Rogers    },
55262201368SIan Rogers    {
55362201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - SNP; for VN0",
55462201368SIan Rogers        "EventCode": "0x13",
55562201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_SNP.VN0",
55662201368SIan Rogers        "PerPkg": "1",
55762201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors SNP flits only.",
55862201368SIan Rogers        "UMask": "0x1",
55962201368SIan Rogers        "Unit": "QPI LL"
56062201368SIan Rogers    },
56162201368SIan Rogers    {
56262201368SIan Rogers        "BriefDescription": "RxQ Cycles Not Empty - SNP; for VN1",
56362201368SIan Rogers        "EventCode": "0x13",
56462201368SIan Rogers        "EventName": "UNC_Q_RxL_CYCLES_NE_SNP.VN1",
56562201368SIan Rogers        "PerPkg": "1",
56662201368SIan Rogers        "PublicDescription": "Counts the number of cycles that the QPI RxQ was not empty.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy Accumulator event to calculate the average occupancy.  This monitors SNP flits only.",
56762201368SIan Rogers        "UMask": "0x2",
56862201368SIan Rogers        "Unit": "QPI LL"
56962201368SIan Rogers    },
57062201368SIan Rogers    {
57162201368SIan Rogers        "BriefDescription": "Flits Received - Group 0; Data Tx Flits",
57262201368SIan Rogers        "EventCode": "0x1",
57362201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G0.DATA",
57462201368SIan Rogers        "PerPkg": "1",
575d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  It includes filters for Idle, protocol, and Data Flits.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time (for L0) or 4B instead of 8B for L0p.; Number of data flits received over QPI.  Each flit contains 64b of data.  This includes both DRS and NCB data flits (coherent and non-coherent).  This can be used to calculate the data bandwidth of the QPI link.  One can get a good picture of the QPI-link characteristics by evaluating the protocol flits, data flits, and idle/null flits.  This does not include the header flits that go in data packets.",
57662201368SIan Rogers        "UMask": "0x2",
57762201368SIan Rogers        "Unit": "QPI LL"
57862201368SIan Rogers    },
57962201368SIan Rogers    {
58062201368SIan Rogers        "BriefDescription": "Flits Received - Group 0; Idle and Null Flits",
58162201368SIan Rogers        "EventCode": "0x1",
58262201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G0.IDLE",
58362201368SIan Rogers        "PerPkg": "1",
584d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  It includes filters for Idle, protocol, and Data Flits.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time (for L0) or 4B instead of 8B for L0p.; Number of flits received over QPI that do not hold protocol payload.  When QPI is not in a power saving state, it continuously transmits flits across the link.  When there are no protocol flits to send, it will send IDLE and NULL flits  across.  These flits sometimes do carry a payload, such as credit returns, but are generally not considered part of the QPI bandwidth.",
58562201368SIan Rogers        "UMask": "0x1",
58662201368SIan Rogers        "Unit": "QPI LL"
58762201368SIan Rogers    },
58862201368SIan Rogers    {
58962201368SIan Rogers        "BriefDescription": "Flits Received - Group 0; Non-Data protocol Tx Flits",
59062201368SIan Rogers        "EventCode": "0x1",
59162201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G0.NON_DATA",
59262201368SIan Rogers        "PerPkg": "1",
593d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  It includes filters for Idle, protocol, and Data Flits.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time (for L0) or 4B instead of 8B for L0p.; Number of non-NULL non-data flits received across QPI.  This basically tracks the protocol overhead on the QPI link.  One can get a good picture of the QPI-link characteristics by evaluating the protocol flits, data flits, and idle/null flits.  This includes the header flits for data packets.",
59462201368SIan Rogers        "UMask": "0x4",
59562201368SIan Rogers        "Unit": "QPI LL"
59662201368SIan Rogers    },
59762201368SIan Rogers    {
59862201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; DRS Flits (both Header and Data)",
59962201368SIan Rogers        "EventCode": "0x2",
60062201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.DRS",
60162201368SIan Rogers        "PerPkg": "1",
602d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits received over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.  This does not count data flits received over the NCB channel which transmits non-coherent data.",
60362201368SIan Rogers        "UMask": "0x18",
60462201368SIan Rogers        "Unit": "QPI LL"
60562201368SIan Rogers    },
60662201368SIan Rogers    {
60762201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; DRS Data Flits",
60862201368SIan Rogers        "EventCode": "0x2",
60962201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.DRS_DATA",
61062201368SIan Rogers        "PerPkg": "1",
611d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of data flits received over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.  This does not count data flits received over the NCB channel which transmits non-coherent data.  This includes only the data flits (not the header).",
61262201368SIan Rogers        "UMask": "0x8",
61362201368SIan Rogers        "Unit": "QPI LL"
61462201368SIan Rogers    },
61562201368SIan Rogers    {
61662201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; DRS Header Flits",
61762201368SIan Rogers        "EventCode": "0x2",
61862201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.DRS_NONDATA",
61962201368SIan Rogers        "PerPkg": "1",
620d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of protocol flits received over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.  This does not count data flits received over the NCB channel which transmits non-coherent data.  This includes only the header flits (not the data).  This includes extended headers.",
62162201368SIan Rogers        "UMask": "0x10",
62262201368SIan Rogers        "Unit": "QPI LL"
62362201368SIan Rogers    },
62462201368SIan Rogers    {
62562201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; HOM Flits",
62662201368SIan Rogers        "EventCode": "0x2",
62762201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.HOM",
62862201368SIan Rogers        "PerPkg": "1",
629d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of flits received over QPI on the home channel.",
63062201368SIan Rogers        "UMask": "0x6",
63162201368SIan Rogers        "Unit": "QPI LL"
63262201368SIan Rogers    },
63362201368SIan Rogers    {
63462201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; HOM Non-Request Flits",
63562201368SIan Rogers        "EventCode": "0x2",
63662201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.HOM_NONREQ",
63762201368SIan Rogers        "PerPkg": "1",
638d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of non-request flits received over QPI on the home channel.  These are most commonly snoop responses, and this event can be used as a proxy for that.",
63962201368SIan Rogers        "UMask": "0x4",
64062201368SIan Rogers        "Unit": "QPI LL"
64162201368SIan Rogers    },
64262201368SIan Rogers    {
64362201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; HOM Request Flits",
64462201368SIan Rogers        "EventCode": "0x2",
64562201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.HOM_REQ",
64662201368SIan Rogers        "PerPkg": "1",
647d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of data request received over QPI on the home channel.  This basically counts the number of remote memory requests received over QPI.  In conjunction with the local read count in the Home Agent, one can calculate the number of LLC Misses.",
64862201368SIan Rogers        "UMask": "0x2",
64962201368SIan Rogers        "Unit": "QPI LL"
65062201368SIan Rogers    },
65162201368SIan Rogers    {
65262201368SIan Rogers        "BriefDescription": "Flits Received - Group 1; SNP Flits",
65362201368SIan Rogers        "EventCode": "0x2",
65462201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G1.SNP",
65562201368SIan Rogers        "PerPkg": "1",
656d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of snoop request flits received over QPI.  These requests are contained in the snoop channel.  This does not include snoop responses, which are received on the home channel.",
65762201368SIan Rogers        "UMask": "0x1",
65862201368SIan Rogers        "Unit": "QPI LL"
65962201368SIan Rogers    },
66062201368SIan Rogers    {
66162201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Coherent Rx Flits",
66262201368SIan Rogers        "EventCode": "0x3",
66362201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NCB",
66462201368SIan Rogers        "PerPkg": "1",
665d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass flits.  These packets are generally used to transmit non-coherent data across QPI.",
666*8ee37818SIan Rogers        "UMask": "0xc",
66762201368SIan Rogers        "Unit": "QPI LL"
66862201368SIan Rogers    },
66962201368SIan Rogers    {
67062201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Coherent data Rx Flits",
67162201368SIan Rogers        "EventCode": "0x3",
67262201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NCB_DATA",
67362201368SIan Rogers        "PerPkg": "1",
674d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass data flits.  These flits are generally used to transmit non-coherent data across QPI.  This does not include a count of the DRS (coherent) data flits.  This only counts the data flits, not the NCB headers.",
67562201368SIan Rogers        "UMask": "0x4",
67662201368SIan Rogers        "Unit": "QPI LL"
67762201368SIan Rogers    },
67862201368SIan Rogers    {
67962201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Coherent non-data Rx Flits",
68062201368SIan Rogers        "EventCode": "0x3",
68162201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NCB_NONDATA",
68262201368SIan Rogers        "PerPkg": "1",
683d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass non-data flits.  These packets are generally used to transmit non-coherent data across QPI, and the flits counted here are for headers and other non-data flits.  This includes extended headers.",
68462201368SIan Rogers        "UMask": "0x8",
68562201368SIan Rogers        "Unit": "QPI LL"
68662201368SIan Rogers    },
68762201368SIan Rogers    {
68862201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Coherent standard Rx Flits",
68962201368SIan Rogers        "EventCode": "0x3",
69062201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NCS",
69162201368SIan Rogers        "PerPkg": "1",
692d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of NCS (non-coherent standard) flits received over QPI.    This includes extended headers.",
69362201368SIan Rogers        "UMask": "0x10",
69462201368SIan Rogers        "Unit": "QPI LL"
69562201368SIan Rogers    },
69662201368SIan Rogers    {
69762201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Data Response Rx Flits - AD",
69862201368SIan Rogers        "EventCode": "0x3",
69962201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NDR_AD",
70062201368SIan Rogers        "PerPkg": "1",
701d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits received over the NDR (Non-Data Response) channel.  This channel is used to send a variety of protocol flits including grants and completions.  This is only for NDR packets to the local socket which use the AK ring.",
70262201368SIan Rogers        "UMask": "0x1",
70362201368SIan Rogers        "Unit": "QPI LL"
70462201368SIan Rogers    },
70562201368SIan Rogers    {
70662201368SIan Rogers        "BriefDescription": "Flits Received - Group 2; Non-Data Response Rx Flits - AK",
70762201368SIan Rogers        "EventCode": "0x3",
70862201368SIan Rogers        "EventName": "UNC_Q_RxL_FLITS_G2.NDR_AK",
70962201368SIan Rogers        "PerPkg": "1",
710d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits received from the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits received over the NDR (Non-Data Response) channel.  This channel is used to send a variety of protocol flits including grants and completions.  This is only for NDR packets destined for Route-thru to a remote socket.",
71162201368SIan Rogers        "UMask": "0x2",
71262201368SIan Rogers        "Unit": "QPI LL"
71362201368SIan Rogers    },
71462201368SIan Rogers    {
71562201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations",
71662201368SIan Rogers        "EventCode": "0x8",
71762201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS",
71862201368SIan Rogers        "PerPkg": "1",
71962201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.",
72062201368SIan Rogers        "Unit": "QPI LL"
72162201368SIan Rogers    },
72262201368SIan Rogers    {
72362201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - DRS",
72462201368SIan Rogers        "EventCode": "0x9",
72562201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_DRS",
72662201368SIan Rogers        "PerPkg": "1",
72762201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only DRS flits.",
72862201368SIan Rogers        "Unit": "QPI LL"
72962201368SIan Rogers    },
73062201368SIan Rogers    {
73162201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - DRS; for VN0",
73262201368SIan Rogers        "EventCode": "0x9",
73362201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_DRS.VN0",
73462201368SIan Rogers        "PerPkg": "1",
73562201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only DRS flits.",
73662201368SIan Rogers        "UMask": "0x1",
73762201368SIan Rogers        "Unit": "QPI LL"
73862201368SIan Rogers    },
73962201368SIan Rogers    {
74062201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - DRS; for VN1",
74162201368SIan Rogers        "EventCode": "0x9",
74262201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_DRS.VN1",
74362201368SIan Rogers        "PerPkg": "1",
74462201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only DRS flits.",
74562201368SIan Rogers        "UMask": "0x2",
74662201368SIan Rogers        "Unit": "QPI LL"
74762201368SIan Rogers    },
74862201368SIan Rogers    {
74962201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - HOM",
75062201368SIan Rogers        "EventCode": "0xc",
75162201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_HOM",
75262201368SIan Rogers        "PerPkg": "1",
75362201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only HOM flits.",
75462201368SIan Rogers        "Unit": "QPI LL"
75562201368SIan Rogers    },
75662201368SIan Rogers    {
75762201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - HOM; for VN0",
75862201368SIan Rogers        "EventCode": "0xC",
75962201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_HOM.VN0",
76062201368SIan Rogers        "PerPkg": "1",
76162201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only HOM flits.",
76262201368SIan Rogers        "UMask": "0x1",
76362201368SIan Rogers        "Unit": "QPI LL"
76462201368SIan Rogers    },
76562201368SIan Rogers    {
76662201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - HOM; for VN1",
76762201368SIan Rogers        "EventCode": "0xC",
76862201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_HOM.VN1",
76962201368SIan Rogers        "PerPkg": "1",
77062201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only HOM flits.",
77162201368SIan Rogers        "UMask": "0x2",
77262201368SIan Rogers        "Unit": "QPI LL"
77362201368SIan Rogers    },
77462201368SIan Rogers    {
77562201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCB",
77662201368SIan Rogers        "EventCode": "0xa",
77762201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCB",
77862201368SIan Rogers        "PerPkg": "1",
77962201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCB flits.",
78062201368SIan Rogers        "Unit": "QPI LL"
78162201368SIan Rogers    },
78262201368SIan Rogers    {
78362201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCB; for VN0",
78462201368SIan Rogers        "EventCode": "0xA",
78562201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCB.VN0",
78662201368SIan Rogers        "PerPkg": "1",
78762201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCB flits.",
78862201368SIan Rogers        "UMask": "0x1",
78962201368SIan Rogers        "Unit": "QPI LL"
79062201368SIan Rogers    },
79162201368SIan Rogers    {
79262201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCB; for VN1",
79362201368SIan Rogers        "EventCode": "0xA",
79462201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCB.VN1",
79562201368SIan Rogers        "PerPkg": "1",
79662201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCB flits.",
79762201368SIan Rogers        "UMask": "0x2",
79862201368SIan Rogers        "Unit": "QPI LL"
79962201368SIan Rogers    },
80062201368SIan Rogers    {
80162201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCS",
80262201368SIan Rogers        "EventCode": "0xb",
80362201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCS",
80462201368SIan Rogers        "PerPkg": "1",
80562201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCS flits.",
80662201368SIan Rogers        "Unit": "QPI LL"
80762201368SIan Rogers    },
80862201368SIan Rogers    {
80962201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCS; for VN0",
81062201368SIan Rogers        "EventCode": "0xB",
81162201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCS.VN0",
81262201368SIan Rogers        "PerPkg": "1",
81362201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCS flits.",
81462201368SIan Rogers        "UMask": "0x1",
81562201368SIan Rogers        "Unit": "QPI LL"
81662201368SIan Rogers    },
81762201368SIan Rogers    {
81862201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NCS; for VN1",
81962201368SIan Rogers        "EventCode": "0xB",
82062201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NCS.VN1",
82162201368SIan Rogers        "PerPkg": "1",
82262201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NCS flits.",
82362201368SIan Rogers        "UMask": "0x2",
82462201368SIan Rogers        "Unit": "QPI LL"
82562201368SIan Rogers    },
82662201368SIan Rogers    {
82762201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NDR",
82862201368SIan Rogers        "EventCode": "0xe",
82962201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NDR",
83062201368SIan Rogers        "PerPkg": "1",
83162201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NDR flits.",
83262201368SIan Rogers        "Unit": "QPI LL"
83362201368SIan Rogers    },
83462201368SIan Rogers    {
83562201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NDR; for VN0",
83662201368SIan Rogers        "EventCode": "0xE",
83762201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NDR.VN0",
83862201368SIan Rogers        "PerPkg": "1",
83962201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NDR flits.",
84062201368SIan Rogers        "UMask": "0x1",
84162201368SIan Rogers        "Unit": "QPI LL"
84262201368SIan Rogers    },
84362201368SIan Rogers    {
84462201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - NDR; for VN1",
84562201368SIan Rogers        "EventCode": "0xE",
84662201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_NDR.VN1",
84762201368SIan Rogers        "PerPkg": "1",
84862201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only NDR flits.",
84962201368SIan Rogers        "UMask": "0x2",
85062201368SIan Rogers        "Unit": "QPI LL"
85162201368SIan Rogers    },
85262201368SIan Rogers    {
85362201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - SNP",
85462201368SIan Rogers        "EventCode": "0xd",
85562201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_SNP",
85662201368SIan Rogers        "PerPkg": "1",
85762201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only SNP flits.",
85862201368SIan Rogers        "Unit": "QPI LL"
85962201368SIan Rogers    },
86062201368SIan Rogers    {
86162201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - SNP; for VN0",
86262201368SIan Rogers        "EventCode": "0xD",
86362201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_SNP.VN0",
86462201368SIan Rogers        "PerPkg": "1",
86562201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only SNP flits.",
86662201368SIan Rogers        "UMask": "0x1",
86762201368SIan Rogers        "Unit": "QPI LL"
86862201368SIan Rogers    },
86962201368SIan Rogers    {
87062201368SIan Rogers        "BriefDescription": "Rx Flit Buffer Allocations - SNP; for VN1",
87162201368SIan Rogers        "EventCode": "0xD",
87262201368SIan Rogers        "EventName": "UNC_Q_RxL_INSERTS_SNP.VN1",
87362201368SIan Rogers        "PerPkg": "1",
87462201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Rx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.  This monitors only SNP flits.",
87562201368SIan Rogers        "UMask": "0x2",
87662201368SIan Rogers        "Unit": "QPI LL"
87762201368SIan Rogers    },
87862201368SIan Rogers    {
87962201368SIan Rogers        "BriefDescription": "RxQ Occupancy - All Packets",
88062201368SIan Rogers        "EventCode": "0xb",
88162201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY",
88262201368SIan Rogers        "PerPkg": "1",
88362201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.",
88462201368SIan Rogers        "Unit": "QPI LL"
88562201368SIan Rogers    },
88662201368SIan Rogers    {
88762201368SIan Rogers        "BriefDescription": "RxQ Occupancy - DRS",
88862201368SIan Rogers        "EventCode": "0x15",
88962201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_DRS",
89062201368SIan Rogers        "PerPkg": "1",
89162201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors DRS flits only.",
89262201368SIan Rogers        "Unit": "QPI LL"
89362201368SIan Rogers    },
89462201368SIan Rogers    {
89562201368SIan Rogers        "BriefDescription": "RxQ Occupancy - DRS; for VN0",
89662201368SIan Rogers        "EventCode": "0x15",
89762201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_DRS.VN0",
89862201368SIan Rogers        "PerPkg": "1",
89962201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors DRS flits only.",
90062201368SIan Rogers        "UMask": "0x1",
90162201368SIan Rogers        "Unit": "QPI LL"
90262201368SIan Rogers    },
90362201368SIan Rogers    {
90462201368SIan Rogers        "BriefDescription": "RxQ Occupancy - DRS; for VN1",
90562201368SIan Rogers        "EventCode": "0x15",
90662201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_DRS.VN1",
90762201368SIan Rogers        "PerPkg": "1",
90862201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors DRS flits only.",
90962201368SIan Rogers        "UMask": "0x2",
91062201368SIan Rogers        "Unit": "QPI LL"
91162201368SIan Rogers    },
91262201368SIan Rogers    {
91362201368SIan Rogers        "BriefDescription": "RxQ Occupancy - HOM",
91462201368SIan Rogers        "EventCode": "0x18",
91562201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_HOM",
91662201368SIan Rogers        "PerPkg": "1",
91762201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors HOM flits only.",
91862201368SIan Rogers        "Unit": "QPI LL"
91962201368SIan Rogers    },
92062201368SIan Rogers    {
92162201368SIan Rogers        "BriefDescription": "RxQ Occupancy - HOM; for VN0",
92262201368SIan Rogers        "EventCode": "0x18",
92362201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_HOM.VN0",
92462201368SIan Rogers        "PerPkg": "1",
92562201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors HOM flits only.",
92662201368SIan Rogers        "UMask": "0x1",
92762201368SIan Rogers        "Unit": "QPI LL"
92862201368SIan Rogers    },
92962201368SIan Rogers    {
93062201368SIan Rogers        "BriefDescription": "RxQ Occupancy - HOM; for VN1",
93162201368SIan Rogers        "EventCode": "0x18",
93262201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_HOM.VN1",
93362201368SIan Rogers        "PerPkg": "1",
93462201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors HOM flits only.",
93562201368SIan Rogers        "UMask": "0x2",
93662201368SIan Rogers        "Unit": "QPI LL"
93762201368SIan Rogers    },
93862201368SIan Rogers    {
93962201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCB",
94062201368SIan Rogers        "EventCode": "0x16",
94162201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCB",
94262201368SIan Rogers        "PerPkg": "1",
94362201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCB flits only.",
94462201368SIan Rogers        "Unit": "QPI LL"
94562201368SIan Rogers    },
94662201368SIan Rogers    {
94762201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCB; for VN0",
94862201368SIan Rogers        "EventCode": "0x16",
94962201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCB.VN0",
95062201368SIan Rogers        "PerPkg": "1",
95162201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCB flits only.",
95262201368SIan Rogers        "UMask": "0x1",
95362201368SIan Rogers        "Unit": "QPI LL"
95462201368SIan Rogers    },
95562201368SIan Rogers    {
95662201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCB; for VN1",
95762201368SIan Rogers        "EventCode": "0x16",
95862201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCB.VN1",
95962201368SIan Rogers        "PerPkg": "1",
96062201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCB flits only.",
96162201368SIan Rogers        "UMask": "0x2",
96262201368SIan Rogers        "Unit": "QPI LL"
96362201368SIan Rogers    },
96462201368SIan Rogers    {
96562201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCS",
96662201368SIan Rogers        "EventCode": "0x17",
96762201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCS",
96862201368SIan Rogers        "PerPkg": "1",
96962201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCS flits only.",
97062201368SIan Rogers        "Unit": "QPI LL"
97162201368SIan Rogers    },
97262201368SIan Rogers    {
97362201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCS; for VN0",
97462201368SIan Rogers        "EventCode": "0x17",
97562201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCS.VN0",
97662201368SIan Rogers        "PerPkg": "1",
97762201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCS flits only.",
97862201368SIan Rogers        "UMask": "0x1",
97962201368SIan Rogers        "Unit": "QPI LL"
98062201368SIan Rogers    },
98162201368SIan Rogers    {
98262201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NCS; for VN1",
98362201368SIan Rogers        "EventCode": "0x17",
98462201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NCS.VN1",
98562201368SIan Rogers        "PerPkg": "1",
98662201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NCS flits only.",
98762201368SIan Rogers        "UMask": "0x2",
98862201368SIan Rogers        "Unit": "QPI LL"
98962201368SIan Rogers    },
99062201368SIan Rogers    {
99162201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NDR",
99262201368SIan Rogers        "EventCode": "0x1a",
99362201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NDR",
99462201368SIan Rogers        "PerPkg": "1",
99562201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NDR flits only.",
99662201368SIan Rogers        "Unit": "QPI LL"
99762201368SIan Rogers    },
99862201368SIan Rogers    {
99962201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NDR; for VN0",
100062201368SIan Rogers        "EventCode": "0x1A",
100162201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NDR.VN0",
100262201368SIan Rogers        "PerPkg": "1",
100362201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NDR flits only.",
100462201368SIan Rogers        "UMask": "0x1",
100562201368SIan Rogers        "Unit": "QPI LL"
100662201368SIan Rogers    },
100762201368SIan Rogers    {
100862201368SIan Rogers        "BriefDescription": "RxQ Occupancy - NDR; for VN1",
100962201368SIan Rogers        "EventCode": "0x1A",
101062201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_NDR.VN1",
101162201368SIan Rogers        "PerPkg": "1",
101262201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors NDR flits only.",
101362201368SIan Rogers        "UMask": "0x2",
101462201368SIan Rogers        "Unit": "QPI LL"
101562201368SIan Rogers    },
101662201368SIan Rogers    {
101762201368SIan Rogers        "BriefDescription": "RxQ Occupancy - SNP",
101862201368SIan Rogers        "EventCode": "0x19",
101962201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_SNP",
102062201368SIan Rogers        "PerPkg": "1",
102162201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors SNP flits only.",
102262201368SIan Rogers        "Unit": "QPI LL"
102362201368SIan Rogers    },
102462201368SIan Rogers    {
102562201368SIan Rogers        "BriefDescription": "RxQ Occupancy - SNP; for VN0",
102662201368SIan Rogers        "EventCode": "0x19",
102762201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_SNP.VN0",
102862201368SIan Rogers        "PerPkg": "1",
102962201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors SNP flits only.",
103062201368SIan Rogers        "UMask": "0x1",
103162201368SIan Rogers        "Unit": "QPI LL"
103262201368SIan Rogers    },
103362201368SIan Rogers    {
103462201368SIan Rogers        "BriefDescription": "RxQ Occupancy - SNP; for VN1",
103562201368SIan Rogers        "EventCode": "0x19",
103662201368SIan Rogers        "EventName": "UNC_Q_RxL_OCCUPANCY_SNP.VN1",
103762201368SIan Rogers        "PerPkg": "1",
103862201368SIan Rogers        "PublicDescription": "Accumulates the number of elements in the QPI RxQ in each cycle.  Generally, when data is transmitted across QPI, it will bypass the RxQ and pass directly to the ring interface.  If things back up getting transmitted onto the ring, however, it may need to allocate into this buffer, thus increasing the latency.  This event can be used in conjunction with the Flit Buffer Not Empty event to calculate average occupancy, or with the Flit Buffer Allocations event to track average lifetime.  This monitors SNP flits only.",
103962201368SIan Rogers        "UMask": "0x2",
104062201368SIan Rogers        "Unit": "QPI LL"
104162201368SIan Rogers    },
104262201368SIan Rogers    {
104362201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - HOM",
104462201368SIan Rogers        "EventCode": "0x35",
104562201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_DRS",
104662201368SIan Rogers        "PerPkg": "1",
104762201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the HOM message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
104862201368SIan Rogers        "UMask": "0x1",
104962201368SIan Rogers        "Unit": "QPI LL"
105062201368SIan Rogers    },
105162201368SIan Rogers    {
105262201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - DRS",
105362201368SIan Rogers        "EventCode": "0x35",
105462201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_HOM",
105562201368SIan Rogers        "PerPkg": "1",
105662201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the DRS message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
105762201368SIan Rogers        "UMask": "0x8",
105862201368SIan Rogers        "Unit": "QPI LL"
105962201368SIan Rogers    },
106062201368SIan Rogers    {
106162201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - SNP",
106262201368SIan Rogers        "EventCode": "0x35",
106362201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_NCB",
106462201368SIan Rogers        "PerPkg": "1",
106562201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the SNP message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
106662201368SIan Rogers        "UMask": "0x2",
106762201368SIan Rogers        "Unit": "QPI LL"
106862201368SIan Rogers    },
106962201368SIan Rogers    {
107062201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - NDR",
107162201368SIan Rogers        "EventCode": "0x35",
107262201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_NCS",
107362201368SIan Rogers        "PerPkg": "1",
107462201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the NDR message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
107562201368SIan Rogers        "UMask": "0x4",
107662201368SIan Rogers        "Unit": "QPI LL"
107762201368SIan Rogers    },
107862201368SIan Rogers    {
107962201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - NCS",
108062201368SIan Rogers        "EventCode": "0x35",
108162201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_NDR",
108262201368SIan Rogers        "PerPkg": "1",
108362201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the NCS message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
108462201368SIan Rogers        "UMask": "0x20",
108562201368SIan Rogers        "Unit": "QPI LL"
108662201368SIan Rogers    },
108762201368SIan Rogers    {
108862201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; BGF Stall - NCB",
108962201368SIan Rogers        "EventCode": "0x35",
109062201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.BGF_SNP",
109162201368SIan Rogers        "PerPkg": "1",
109262201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet from the NCB message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
109362201368SIan Rogers        "UMask": "0x10",
109462201368SIan Rogers        "Unit": "QPI LL"
109562201368SIan Rogers    },
109662201368SIan Rogers    {
109762201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; Egress Credits",
109862201368SIan Rogers        "EventCode": "0x35",
109962201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.EGRESS_CREDITS",
110062201368SIan Rogers        "PerPkg": "1",
110162201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled a packet because there were insufficient BGF credits.  For details on a message class granularity, use the Egress Credit Occupancy events.",
110262201368SIan Rogers        "UMask": "0x40",
110362201368SIan Rogers        "Unit": "QPI LL"
110462201368SIan Rogers    },
110562201368SIan Rogers    {
110662201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN0; GV",
110762201368SIan Rogers        "EventCode": "0x35",
110862201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN0.GV",
110962201368SIan Rogers        "PerPkg": "1",
111062201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 0; Stalled because a GV transition (frequency transition) was taking place.",
111162201368SIan Rogers        "UMask": "0x80",
111262201368SIan Rogers        "Unit": "QPI LL"
111362201368SIan Rogers    },
111462201368SIan Rogers    {
111562201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - HOM",
111662201368SIan Rogers        "EventCode": "0x3a",
111762201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_DRS",
111862201368SIan Rogers        "PerPkg": "1",
111962201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the HOM message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
112062201368SIan Rogers        "UMask": "0x1",
112162201368SIan Rogers        "Unit": "QPI LL"
112262201368SIan Rogers    },
112362201368SIan Rogers    {
112462201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - DRS",
112562201368SIan Rogers        "EventCode": "0x3a",
112662201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_HOM",
112762201368SIan Rogers        "PerPkg": "1",
112862201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the DRS message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
112962201368SIan Rogers        "UMask": "0x8",
113062201368SIan Rogers        "Unit": "QPI LL"
113162201368SIan Rogers    },
113262201368SIan Rogers    {
113362201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - SNP",
113462201368SIan Rogers        "EventCode": "0x3a",
113562201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_NCB",
113662201368SIan Rogers        "PerPkg": "1",
113762201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the SNP message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
113862201368SIan Rogers        "UMask": "0x2",
113962201368SIan Rogers        "Unit": "QPI LL"
114062201368SIan Rogers    },
114162201368SIan Rogers    {
114262201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - NDR",
114362201368SIan Rogers        "EventCode": "0x3a",
114462201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_NCS",
114562201368SIan Rogers        "PerPkg": "1",
114662201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the NDR message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
114762201368SIan Rogers        "UMask": "0x4",
114862201368SIan Rogers        "Unit": "QPI LL"
114962201368SIan Rogers    },
115062201368SIan Rogers    {
115162201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - NCS",
115262201368SIan Rogers        "EventCode": "0x3a",
115362201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_NDR",
115462201368SIan Rogers        "PerPkg": "1",
115562201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the NCS message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
115662201368SIan Rogers        "UMask": "0x20",
115762201368SIan Rogers        "Unit": "QPI LL"
115862201368SIan Rogers    },
115962201368SIan Rogers    {
116062201368SIan Rogers        "BriefDescription": "Stalls Sending to R3QPI on VN1; BGF Stall - NCB",
116162201368SIan Rogers        "EventCode": "0x3a",
116262201368SIan Rogers        "EventName": "UNC_Q_RxL_STALLS_VN1.BGF_SNP",
116362201368SIan Rogers        "PerPkg": "1",
116462201368SIan Rogers        "PublicDescription": "Number of stalls trying to send to R3QPI on Virtual Network 1.; Stalled a packet from the NCB message class because there were not enough BGF credits.  In bypass mode, we will stall on the packet boundary, while in RxQ mode we will stall on the flit boundary.",
116562201368SIan Rogers        "UMask": "0x10",
116662201368SIan Rogers        "Unit": "QPI LL"
116762201368SIan Rogers    },
116862201368SIan Rogers    {
116962201368SIan Rogers        "BriefDescription": "Cycles in L0p",
117062201368SIan Rogers        "EventCode": "0xd",
117162201368SIan Rogers        "EventName": "UNC_Q_TxL0P_POWER_CYCLES",
117262201368SIan Rogers        "PerPkg": "1",
117362201368SIan Rogers        "PublicDescription": "Number of QPI qfclk cycles spent in L0p power mode.  L0p is a mode where we disable 1/2 of the QPI lanes, decreasing our bandwidth in order to save power.  It increases snoop and data transfer latencies and decreases overall bandwidth.  This mode can be very useful in NUMA optimized workloads that largely only utilize QPI for snoops and their responses.  Use edge detect to count the number of instances when the QPI link entered L0p.  Link power states are per link and per direction, so for example the Tx direction could be in one state while Rx was in another.",
117462201368SIan Rogers        "Unit": "QPI LL"
117562201368SIan Rogers    },
117662201368SIan Rogers    {
117762201368SIan Rogers        "BriefDescription": "Cycles in L0",
117862201368SIan Rogers        "EventCode": "0xc",
117962201368SIan Rogers        "EventName": "UNC_Q_TxL0_POWER_CYCLES",
118062201368SIan Rogers        "PerPkg": "1",
118162201368SIan Rogers        "PublicDescription": "Number of QPI qfclk cycles spent in L0 power mode in the Link Layer.  L0 is the default mode which provides the highest performance with the most power.  Use edge detect to count the number of instances that the link entered L0.  Link power states are per link and per direction, so for example the Tx direction could be in one state while Rx was in another.  The phy layer  sometimes leaves L0 for training, which will not be captured by this event.",
118262201368SIan Rogers        "Unit": "QPI LL"
118362201368SIan Rogers    },
118462201368SIan Rogers    {
118562201368SIan Rogers        "BriefDescription": "Tx Flit Buffer Bypassed",
118662201368SIan Rogers        "EventCode": "0x5",
118762201368SIan Rogers        "EventName": "UNC_Q_TxL_BYPASSED",
118862201368SIan Rogers        "PerPkg": "1",
118962201368SIan Rogers        "PublicDescription": "Counts the number of times that an incoming flit was able to bypass the Tx flit buffer and pass directly out the QPI Link. Generally, when data is transmitted across QPI, it will bypass the TxQ and pass directly to the link.  However, the TxQ will be used with L0p and when LLR occurs, increasing latency to transfer out to the link.",
119062201368SIan Rogers        "Unit": "QPI LL"
119162201368SIan Rogers    },
119262201368SIan Rogers    {
119362201368SIan Rogers        "BriefDescription": "Cycles Stalled with no LLR Credits; LLR is almost full",
119462201368SIan Rogers        "EventCode": "0x2",
119562201368SIan Rogers        "EventName": "UNC_Q_TxL_CRC_NO_CREDITS.ALMOST_FULL",
119662201368SIan Rogers        "PerPkg": "1",
119762201368SIan Rogers        "PublicDescription": "Number of cycles when the Tx side ran out of Link Layer Retry credits, causing the Tx to stall.; When LLR is almost full, we block some but not all packets.",
119862201368SIan Rogers        "UMask": "0x2",
119962201368SIan Rogers        "Unit": "QPI LL"
120062201368SIan Rogers    },
120162201368SIan Rogers    {
120262201368SIan Rogers        "BriefDescription": "Cycles Stalled with no LLR Credits; LLR is full",
120362201368SIan Rogers        "EventCode": "0x2",
120462201368SIan Rogers        "EventName": "UNC_Q_TxL_CRC_NO_CREDITS.FULL",
120562201368SIan Rogers        "PerPkg": "1",
120662201368SIan Rogers        "PublicDescription": "Number of cycles when the Tx side ran out of Link Layer Retry credits, causing the Tx to stall.; When LLR is totally full, we are not allowed to send any packets.",
120762201368SIan Rogers        "UMask": "0x1",
120862201368SIan Rogers        "Unit": "QPI LL"
120962201368SIan Rogers    },
121062201368SIan Rogers    {
121162201368SIan Rogers        "BriefDescription": "Tx Flit Buffer Cycles not Empty",
121262201368SIan Rogers        "EventCode": "0x6",
121362201368SIan Rogers        "EventName": "UNC_Q_TxL_CYCLES_NE",
121462201368SIan Rogers        "PerPkg": "1",
121562201368SIan Rogers        "PublicDescription": "Counts the number of cycles when the TxQ is not empty. Generally, when data is transmitted across QPI, it will bypass the TxQ and pass directly to the link.  However, the TxQ will be used with L0p and when LLR occurs, increasing latency to transfer out to the link.",
121662201368SIan Rogers        "Unit": "QPI LL"
121762201368SIan Rogers    },
121862201368SIan Rogers    {
121962201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 0; Data Tx Flits",
122062201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G0.DATA",
122162201368SIan Rogers        "PerPkg": "1",
1222d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  It includes filters for Idle, protocol, and Data Flits.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time (for L0) or 4B instead of 8B for L0p.; Number of data flits transmitted over QPI.  Each flit contains 64b of data.  This includes both DRS and NCB data flits (coherent and non-coherent).  This can be used to calculate the data bandwidth of the QPI link.  One can get a good picture of the QPI-link characteristics by evaluating the protocol flits, data flits, and idle/null flits.  This does not include the header flits that go in data packets.",
122362201368SIan Rogers        "UMask": "0x2",
122462201368SIan Rogers        "Unit": "QPI LL"
122562201368SIan Rogers    },
122662201368SIan Rogers    {
122762201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 0; Non-Data protocol Tx Flits",
12286b138c7bSAndi Kleen        "EventName": "UNC_Q_TxL_FLITS_G0.NON_DATA",
12296b138c7bSAndi Kleen        "PerPkg": "1",
1230d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  It includes filters for Idle, protocol, and Data Flits.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time (for L0) or 4B instead of 8B for L0p.; Number of non-NULL non-data flits transmitted across QPI.  This basically tracks the protocol overhead on the QPI link.  One can get a good picture of the QPI-link characteristics by evaluating the protocol flits, data flits, and idle/null flits.  This includes the header flits for data packets.",
12316b138c7bSAndi Kleen        "UMask": "0x4",
12326b138c7bSAndi Kleen        "Unit": "QPI LL"
123362201368SIan Rogers    },
123462201368SIan Rogers    {
123562201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; DRS Flits (both Header and Data)",
123662201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.DRS",
123762201368SIan Rogers        "PerPkg": "1",
1238d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits transmitted over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.",
123962201368SIan Rogers        "UMask": "0x18",
124062201368SIan Rogers        "Unit": "QPI LL"
124162201368SIan Rogers    },
124262201368SIan Rogers    {
124362201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; DRS Data Flits",
124462201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.DRS_DATA",
124562201368SIan Rogers        "PerPkg": "1",
1246d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of data flits transmitted over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.  This does not count data flits transmitted over the NCB channel which transmits non-coherent data.  This includes only the data flits (not the header).",
124762201368SIan Rogers        "UMask": "0x8",
124862201368SIan Rogers        "Unit": "QPI LL"
124962201368SIan Rogers    },
125062201368SIan Rogers    {
125162201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; DRS Header Flits",
125262201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.DRS_NONDATA",
125362201368SIan Rogers        "PerPkg": "1",
1254d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of protocol flits transmitted over QPI on the DRS (Data Response) channel.  DRS flits are used to transmit data with coherency.  This does not count data flits transmitted over the NCB channel which transmits non-coherent data.  This includes only the header flits (not the data).  This includes extended headers.",
125562201368SIan Rogers        "UMask": "0x10",
125662201368SIan Rogers        "Unit": "QPI LL"
125762201368SIan Rogers    },
125862201368SIan Rogers    {
125962201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; HOM Flits",
126062201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.HOM",
126162201368SIan Rogers        "PerPkg": "1",
1262d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of flits transmitted over QPI on the home channel.",
126362201368SIan Rogers        "UMask": "0x6",
126462201368SIan Rogers        "Unit": "QPI LL"
126562201368SIan Rogers    },
126662201368SIan Rogers    {
126762201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; HOM Non-Request Flits",
126862201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.HOM_NONREQ",
126962201368SIan Rogers        "PerPkg": "1",
1270d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of non-request flits transmitted over QPI on the home channel.  These are most commonly snoop responses, and this event can be used as a proxy for that.",
127162201368SIan Rogers        "UMask": "0x4",
127262201368SIan Rogers        "Unit": "QPI LL"
127362201368SIan Rogers    },
127462201368SIan Rogers    {
127562201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; HOM Request Flits",
127662201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.HOM_REQ",
127762201368SIan Rogers        "PerPkg": "1",
1278d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of data request transmitted over QPI on the home channel.  This basically counts the number of remote memory requests transmitted over QPI.  In conjunction with the local read count in the Home Agent, one can calculate the number of LLC Misses.",
127962201368SIan Rogers        "UMask": "0x2",
128062201368SIan Rogers        "Unit": "QPI LL"
128162201368SIan Rogers    },
128262201368SIan Rogers    {
128362201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 1; SNP Flits",
128462201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G1.SNP",
128562201368SIan Rogers        "PerPkg": "1",
1286d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for SNP, HOM, and DRS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the number of snoop request flits transmitted over QPI.  These requests are contained in the snoop channel.  This does not include snoop responses, which are transmitted on the home channel.",
128762201368SIan Rogers        "UMask": "0x1",
128862201368SIan Rogers        "Unit": "QPI LL"
128962201368SIan Rogers    },
129062201368SIan Rogers    {
129162201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Coherent Bypass Tx Flits",
129262201368SIan Rogers        "EventCode": "0x1",
129362201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NCB",
129462201368SIan Rogers        "PerPkg": "1",
1295d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass flits.  These packets are generally used to transmit non-coherent data across QPI.",
1296*8ee37818SIan Rogers        "UMask": "0xc",
129762201368SIan Rogers        "Unit": "QPI LL"
129862201368SIan Rogers    },
129962201368SIan Rogers    {
130062201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Coherent data Tx Flits",
130162201368SIan Rogers        "EventCode": "0x1",
130262201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NCB_DATA",
130362201368SIan Rogers        "PerPkg": "1",
1304d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass data flits.  These flits are generally used to transmit non-coherent data across QPI.  This does not include a count of the DRS (coherent) data flits.  This only counts the data flits, not the NCB headers.",
130562201368SIan Rogers        "UMask": "0x4",
130662201368SIan Rogers        "Unit": "QPI LL"
130762201368SIan Rogers    },
130862201368SIan Rogers    {
130962201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Coherent non-data Tx Flits",
131062201368SIan Rogers        "EventCode": "0x1",
131162201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NCB_NONDATA",
131262201368SIan Rogers        "PerPkg": "1",
1313d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of Non-Coherent Bypass non-data flits.  These packets are generally used to transmit non-coherent data across QPI, and the flits counted here are for headers and other non-data flits.  This includes extended headers.",
131462201368SIan Rogers        "UMask": "0x8",
131562201368SIan Rogers        "Unit": "QPI LL"
131662201368SIan Rogers    },
131762201368SIan Rogers    {
131862201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Coherent standard Tx Flits",
131962201368SIan Rogers        "EventCode": "0x1",
132062201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NCS",
132162201368SIan Rogers        "PerPkg": "1",
1322d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Number of NCS (non-coherent standard) flits transmitted over QPI.    This includes extended headers.",
132362201368SIan Rogers        "UMask": "0x10",
132462201368SIan Rogers        "Unit": "QPI LL"
132562201368SIan Rogers    },
132662201368SIan Rogers    {
132762201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Data Response Tx Flits - AD",
132862201368SIan Rogers        "EventCode": "0x1",
132962201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NDR_AD",
133062201368SIan Rogers        "PerPkg": "1",
1331d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits transmitted over the NDR (Non-Data Response) channel.  This channel is used to send a variety of protocol flits including grants and completions.  This is only for NDR packets to the local socket which use the AK ring.",
133262201368SIan Rogers        "UMask": "0x1",
133362201368SIan Rogers        "Unit": "QPI LL"
133462201368SIan Rogers    },
133562201368SIan Rogers    {
133662201368SIan Rogers        "BriefDescription": "Flits Transferred - Group 2; Non-Data Response Tx Flits - AK",
133762201368SIan Rogers        "EventCode": "0x1",
133862201368SIan Rogers        "EventName": "UNC_Q_TxL_FLITS_G2.NDR_AK",
133962201368SIan Rogers        "PerPkg": "1",
1340d2aaf040SIan Rogers        "PublicDescription": "Counts the number of flits transmitted across the QPI Link.  This is one of three groups that allow us to track flits.  It includes filters for NDR, NCB, and NCS message classes.  Each flit is made up of 80 bits of information (in addition to some ECC data).  In full-width (L0) mode, flits are made up of four fits, each of which contains 20 bits of data (along with some additional ECC data).   In half-width (L0p) mode, the fits are only 10 bits, and therefore it takes twice as many fits to transmit a flit.  When one talks about QPI speed (for example, 8.0 GT/s), the transfers here refer to fits.  Therefore, in L0, the system will transfer 1 flit at the rate of 1/4th the QPI speed.  One can calculate the bandwidth of the link by taking: flits*80b/time.  Note that this is not the same as data bandwidth.  For example, when we are transferring a 64B cacheline across QPI, we will break it into 9 flits -- 1 with header information and 8 with 64 bits of actual data and an additional 16 bits of other information.  To calculate data bandwidth, one should therefore do: data flits * 8B / time.; Counts the total number of flits transmitted over the NDR (Non-Data Response) channel.  This channel is used to send a variety of protocol flits including grants and completions.  This is only for NDR packets destined for Route-thru to a remote socket.",
134162201368SIan Rogers        "UMask": "0x2",
134262201368SIan Rogers        "Unit": "QPI LL"
134362201368SIan Rogers    },
134462201368SIan Rogers    {
134562201368SIan Rogers        "BriefDescription": "Tx Flit Buffer Allocations",
134662201368SIan Rogers        "EventCode": "0x4",
134762201368SIan Rogers        "EventName": "UNC_Q_TxL_INSERTS",
134862201368SIan Rogers        "PerPkg": "1",
134962201368SIan Rogers        "PublicDescription": "Number of allocations into the QPI Tx Flit Buffer.  Generally, when data is transmitted across QPI, it will bypass the TxQ and pass directly to the link.  However, the TxQ will be used with L0p and when LLR occurs, increasing latency to transfer out to the link.  This event can be used in conjunction with the Flit Buffer Occupancy event in order to calculate the average flit buffer lifetime.",
135062201368SIan Rogers        "Unit": "QPI LL"
135162201368SIan Rogers    },
135262201368SIan Rogers    {
135362201368SIan Rogers        "BriefDescription": "Tx Flit Buffer Occupancy",
135462201368SIan Rogers        "EventCode": "0x7",
135562201368SIan Rogers        "EventName": "UNC_Q_TxL_OCCUPANCY",
135662201368SIan Rogers        "PerPkg": "1",
135762201368SIan Rogers        "PublicDescription": "Accumulates the number of flits in the TxQ.  Generally, when data is transmitted across QPI, it will bypass the TxQ and pass directly to the link.  However, the TxQ will be used with L0p and when LLR occurs, increasing latency to transfer out to the link. This can be used with the cycles not empty event to track average occupancy, or the allocations event to track average lifetime in the TxQ.",
135862201368SIan Rogers        "Unit": "QPI LL"
135962201368SIan Rogers    },
136062201368SIan Rogers    {
136162201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - HOM; for VN0",
136262201368SIan Rogers        "EventCode": "0x26",
136362201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_HOM_CREDIT_ACQUIRED.VN0",
136462201368SIan Rogers        "PerPkg": "1",
136562201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle. Flow Control FIFO for Home messages on AD.",
136662201368SIan Rogers        "UMask": "0x1",
136762201368SIan Rogers        "Unit": "QPI LL"
136862201368SIan Rogers    },
136962201368SIan Rogers    {
137062201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - HOM; for VN1",
137162201368SIan Rogers        "EventCode": "0x26",
137262201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_HOM_CREDIT_ACQUIRED.VN1",
137362201368SIan Rogers        "PerPkg": "1",
137462201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle. Flow Control FIFO for Home messages on AD.",
137562201368SIan Rogers        "UMask": "0x2",
137662201368SIan Rogers        "Unit": "QPI LL"
137762201368SIan Rogers    },
137862201368SIan Rogers    {
137962201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD HOM; for VN0",
138062201368SIan Rogers        "EventCode": "0x22",
138162201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_HOM_CREDIT_OCCUPANCY.VN0",
138262201368SIan Rogers        "PerPkg": "1",
138362201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle.  Flow Control FIFO for HOM messages on AD.",
138462201368SIan Rogers        "UMask": "0x1",
138562201368SIan Rogers        "Unit": "QPI LL"
138662201368SIan Rogers    },
138762201368SIan Rogers    {
138862201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD HOM; for VN1",
138962201368SIan Rogers        "EventCode": "0x22",
139062201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_HOM_CREDIT_OCCUPANCY.VN1",
139162201368SIan Rogers        "PerPkg": "1",
139262201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle.  Flow Control FIFO for HOM messages on AD.",
139362201368SIan Rogers        "UMask": "0x2",
139462201368SIan Rogers        "Unit": "QPI LL"
139562201368SIan Rogers    },
139662201368SIan Rogers    {
139762201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD NDR; for VN0",
139862201368SIan Rogers        "EventCode": "0x28",
139962201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_NDR_CREDIT_ACQUIRED.VN0",
140062201368SIan Rogers        "PerPkg": "1",
140162201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle.  Flow Control FIFO for NDR messages on AD.",
140262201368SIan Rogers        "UMask": "0x1",
140362201368SIan Rogers        "Unit": "QPI LL"
140462201368SIan Rogers    },
140562201368SIan Rogers    {
140662201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD NDR; for VN1",
140762201368SIan Rogers        "EventCode": "0x28",
140862201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_NDR_CREDIT_ACQUIRED.VN1",
140962201368SIan Rogers        "PerPkg": "1",
141062201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle.  Flow Control FIFO for NDR messages on AD.",
141162201368SIan Rogers        "UMask": "0x2",
141262201368SIan Rogers        "Unit": "QPI LL"
141362201368SIan Rogers    },
141462201368SIan Rogers    {
141562201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD NDR; for VN0",
141662201368SIan Rogers        "EventCode": "0x24",
141762201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_NDR_CREDIT_OCCUPANCY.VN0",
141862201368SIan Rogers        "PerPkg": "1",
141962201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle. Flow Control FIFO  for NDR messages on AD.",
142062201368SIan Rogers        "UMask": "0x1",
142162201368SIan Rogers        "Unit": "QPI LL"
142262201368SIan Rogers    },
142362201368SIan Rogers    {
142462201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD NDR; for VN1",
142562201368SIan Rogers        "EventCode": "0x24",
142662201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_NDR_CREDIT_OCCUPANCY.VN1",
142762201368SIan Rogers        "PerPkg": "1",
142862201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle. Flow Control FIFO  for NDR messages on AD.",
142962201368SIan Rogers        "UMask": "0x2",
143062201368SIan Rogers        "Unit": "QPI LL"
143162201368SIan Rogers    },
143262201368SIan Rogers    {
143362201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - SNP; for VN0",
143462201368SIan Rogers        "EventCode": "0x27",
143562201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_SNP_CREDIT_ACQUIRED.VN0",
143662201368SIan Rogers        "PerPkg": "1",
143762201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle.  Flow Control FIFO for Snoop messages on AD.",
143862201368SIan Rogers        "UMask": "0x1",
143962201368SIan Rogers        "Unit": "QPI LL"
144062201368SIan Rogers    },
144162201368SIan Rogers    {
144262201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - SNP; for VN1",
144362201368SIan Rogers        "EventCode": "0x27",
144462201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_SNP_CREDIT_ACQUIRED.VN1",
144562201368SIan Rogers        "PerPkg": "1",
144662201368SIan Rogers        "PublicDescription": "Number of link layer credits into the R3 (for transactions across the BGF) acquired each cycle.  Flow Control FIFO for Snoop messages on AD.",
144762201368SIan Rogers        "UMask": "0x2",
144862201368SIan Rogers        "Unit": "QPI LL"
144962201368SIan Rogers    },
145062201368SIan Rogers    {
145162201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD SNP; for VN0",
145262201368SIan Rogers        "EventCode": "0x23",
145362201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_SNP_CREDIT_OCCUPANCY.VN0",
145462201368SIan Rogers        "PerPkg": "1",
1455d2aaf040SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle.  Flow Control FIFO for Snoop messages on AD.",
145662201368SIan Rogers        "UMask": "0x1",
145762201368SIan Rogers        "Unit": "QPI LL"
145862201368SIan Rogers    },
145962201368SIan Rogers    {
146062201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AD SNP; for VN1",
146162201368SIan Rogers        "EventCode": "0x23",
146262201368SIan Rogers        "EventName": "UNC_Q_TxR_AD_SNP_CREDIT_OCCUPANCY.VN1",
146362201368SIan Rogers        "PerPkg": "1",
1464d2aaf040SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of link layer credits into the R3 (for transactions across the BGF) available in each cycle.  Flow Control FIFO for Snoop messages on AD.",
146562201368SIan Rogers        "UMask": "0x2",
146662201368SIan Rogers        "Unit": "QPI LL"
146762201368SIan Rogers    },
146862201368SIan Rogers    {
146962201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR",
147062201368SIan Rogers        "EventCode": "0x29",
147162201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_ACQUIRED",
147262201368SIan Rogers        "PerPkg": "1",
147362201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. Local NDR message class to AK Egress.",
147462201368SIan Rogers        "Unit": "QPI LL"
147562201368SIan Rogers    },
147662201368SIan Rogers    {
147762201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR: for VN0",
147862201368SIan Rogers        "EventCode": "0x29",
147962201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_ACQUIRED.VN0",
148062201368SIan Rogers        "PerPkg": "1",
148162201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. Local NDR message class to AK Egress.",
148262201368SIan Rogers        "UMask": "0x1",
148362201368SIan Rogers        "Unit": "QPI LL"
148462201368SIan Rogers    },
148562201368SIan Rogers    {
148662201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR: for VN1",
148762201368SIan Rogers        "EventCode": "0x29",
148862201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_ACQUIRED.VN1",
148962201368SIan Rogers        "PerPkg": "1",
149062201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. Local NDR message class to AK Egress.",
149162201368SIan Rogers        "UMask": "0x2",
149262201368SIan Rogers        "Unit": "QPI LL"
149362201368SIan Rogers    },
149462201368SIan Rogers    {
149562201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR",
149662201368SIan Rogers        "EventCode": "0x25",
149762201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_OCCUPANCY",
149862201368SIan Rogers        "PerPkg": "1",
149962201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  Local NDR message class to AK Egress.",
150062201368SIan Rogers        "Unit": "QPI LL"
150162201368SIan Rogers    },
150262201368SIan Rogers    {
150362201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR: for VN0",
150462201368SIan Rogers        "EventCode": "0x25",
150562201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_OCCUPANCY.VN0",
150662201368SIan Rogers        "PerPkg": "1",
150762201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  Local NDR message class to AK Egress.",
150862201368SIan Rogers        "UMask": "0x1",
150962201368SIan Rogers        "Unit": "QPI LL"
151062201368SIan Rogers    },
151162201368SIan Rogers    {
151262201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - AK NDR: for VN1",
151362201368SIan Rogers        "EventCode": "0x25",
151462201368SIan Rogers        "EventName": "UNC_Q_TxR_AK_NDR_CREDIT_OCCUPANCY.VN1",
151562201368SIan Rogers        "PerPkg": "1",
151662201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  Local NDR message class to AK Egress.",
151762201368SIan Rogers        "UMask": "0x2",
151862201368SIan Rogers        "Unit": "QPI LL"
151962201368SIan Rogers    },
152062201368SIan Rogers    {
152162201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - DRS; for VN0",
152262201368SIan Rogers        "EventCode": "0x2a",
152362201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_ACQUIRED.VN0",
152462201368SIan Rogers        "PerPkg": "1",
152562201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. DRS message class to BL Egress.",
152662201368SIan Rogers        "UMask": "0x1",
152762201368SIan Rogers        "Unit": "QPI LL"
152862201368SIan Rogers    },
152962201368SIan Rogers    {
153062201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - DRS; for VN1",
153162201368SIan Rogers        "EventCode": "0x2a",
153262201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_ACQUIRED.VN1",
153362201368SIan Rogers        "PerPkg": "1",
153462201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. DRS message class to BL Egress.",
153562201368SIan Rogers        "UMask": "0x2",
153662201368SIan Rogers        "Unit": "QPI LL"
153762201368SIan Rogers    },
153862201368SIan Rogers    {
153962201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - DRS; for Shared VN",
154062201368SIan Rogers        "EventCode": "0x2a",
154162201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_ACQUIRED.VN_SHR",
154262201368SIan Rogers        "PerPkg": "1",
154362201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. DRS message class to BL Egress.",
154462201368SIan Rogers        "UMask": "0x4",
154562201368SIan Rogers        "Unit": "QPI LL"
154662201368SIan Rogers    },
154762201368SIan Rogers    {
154862201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL DRS; for VN0",
154962201368SIan Rogers        "EventCode": "0x1f",
155062201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_OCCUPANCY.VN0",
155162201368SIan Rogers        "PerPkg": "1",
155262201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  DRS message class to BL Egress.",
155362201368SIan Rogers        "UMask": "0x1",
155462201368SIan Rogers        "Unit": "QPI LL"
155562201368SIan Rogers    },
155662201368SIan Rogers    {
155762201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL DRS; for VN1",
155862201368SIan Rogers        "EventCode": "0x1f",
155962201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_OCCUPANCY.VN1",
156062201368SIan Rogers        "PerPkg": "1",
156162201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  DRS message class to BL Egress.",
156262201368SIan Rogers        "UMask": "0x2",
156362201368SIan Rogers        "Unit": "QPI LL"
156462201368SIan Rogers    },
156562201368SIan Rogers    {
156662201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL DRS; for Shared VN",
156762201368SIan Rogers        "EventCode": "0x1f",
156862201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_DRS_CREDIT_OCCUPANCY.VN_SHR",
156962201368SIan Rogers        "PerPkg": "1",
157062201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  DRS message class to BL Egress.",
157162201368SIan Rogers        "UMask": "0x4",
157262201368SIan Rogers        "Unit": "QPI LL"
157362201368SIan Rogers    },
157462201368SIan Rogers    {
157562201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - NCB; for VN0",
157662201368SIan Rogers        "EventCode": "0x2b",
157762201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCB_CREDIT_ACQUIRED.VN0",
157862201368SIan Rogers        "PerPkg": "1",
157962201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. NCB message class to BL Egress.",
158062201368SIan Rogers        "UMask": "0x1",
158162201368SIan Rogers        "Unit": "QPI LL"
158262201368SIan Rogers    },
158362201368SIan Rogers    {
158462201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - NCB; for VN1",
158562201368SIan Rogers        "EventCode": "0x2b",
158662201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCB_CREDIT_ACQUIRED.VN1",
158762201368SIan Rogers        "PerPkg": "1",
158862201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. NCB message class to BL Egress.",
158962201368SIan Rogers        "UMask": "0x2",
159062201368SIan Rogers        "Unit": "QPI LL"
159162201368SIan Rogers    },
159262201368SIan Rogers    {
159362201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL NCB; for VN0",
159462201368SIan Rogers        "EventCode": "0x20",
159562201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCB_CREDIT_OCCUPANCY.VN0",
159662201368SIan Rogers        "PerPkg": "1",
159762201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  NCB message class to BL Egress.",
159862201368SIan Rogers        "UMask": "0x1",
159962201368SIan Rogers        "Unit": "QPI LL"
160062201368SIan Rogers    },
160162201368SIan Rogers    {
160262201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL NCB; for VN1",
160362201368SIan Rogers        "EventCode": "0x20",
160462201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCB_CREDIT_OCCUPANCY.VN1",
160562201368SIan Rogers        "PerPkg": "1",
160662201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  NCB message class to BL Egress.",
160762201368SIan Rogers        "UMask": "0x2",
160862201368SIan Rogers        "Unit": "QPI LL"
160962201368SIan Rogers    },
161062201368SIan Rogers    {
161162201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - NCS; for VN0",
161262201368SIan Rogers        "EventCode": "0x2c",
161362201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCS_CREDIT_ACQUIRED.VN0",
161462201368SIan Rogers        "PerPkg": "1",
161562201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. NCS message class to BL Egress.",
161662201368SIan Rogers        "UMask": "0x1",
161762201368SIan Rogers        "Unit": "QPI LL"
161862201368SIan Rogers    },
161962201368SIan Rogers    {
162062201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - NCS; for VN1",
162162201368SIan Rogers        "EventCode": "0x2c",
162262201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCS_CREDIT_ACQUIRED.VN1",
162362201368SIan Rogers        "PerPkg": "1",
162462201368SIan Rogers        "PublicDescription": "Number of credits into the R3 (for transactions across the BGF) acquired each cycle. NCS message class to BL Egress.",
162562201368SIan Rogers        "UMask": "0x2",
162662201368SIan Rogers        "Unit": "QPI LL"
162762201368SIan Rogers    },
162862201368SIan Rogers    {
162962201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL NCS; for VN0",
163062201368SIan Rogers        "EventCode": "0x21",
163162201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCS_CREDIT_OCCUPANCY.VN0",
163262201368SIan Rogers        "PerPkg": "1",
163362201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  NCS message class to BL Egress.",
163462201368SIan Rogers        "UMask": "0x1",
163562201368SIan Rogers        "Unit": "QPI LL"
163662201368SIan Rogers    },
163762201368SIan Rogers    {
163862201368SIan Rogers        "BriefDescription": "R3QPI Egress Credit Occupancy - BL NCS; for VN1",
163962201368SIan Rogers        "EventCode": "0x21",
164062201368SIan Rogers        "EventName": "UNC_Q_TxR_BL_NCS_CREDIT_OCCUPANCY.VN1",
164162201368SIan Rogers        "PerPkg": "1",
164262201368SIan Rogers        "PublicDescription": "Occupancy event that tracks the number of credits into the R3 (for transactions across the BGF) available in each cycle.  NCS message class to BL Egress.",
164362201368SIan Rogers        "UMask": "0x2",
164462201368SIan Rogers        "Unit": "QPI LL"
164562201368SIan Rogers    },
164662201368SIan Rogers    {
164762201368SIan Rogers        "BriefDescription": "VNA Credits Returned",
164862201368SIan Rogers        "EventCode": "0x1c",
164962201368SIan Rogers        "EventName": "UNC_Q_VNA_CREDIT_RETURNS",
165062201368SIan Rogers        "PerPkg": "1",
165162201368SIan Rogers        "PublicDescription": "Number of VNA credits returned.",
165262201368SIan Rogers        "Unit": "QPI LL"
165362201368SIan Rogers    },
165462201368SIan Rogers    {
165562201368SIan Rogers        "BriefDescription": "VNA Credits Pending Return - Occupancy",
165662201368SIan Rogers        "EventCode": "0x1b",
165762201368SIan Rogers        "EventName": "UNC_Q_VNA_CREDIT_RETURN_OCCUPANCY",
165862201368SIan Rogers        "PerPkg": "1",
165962201368SIan Rogers        "PublicDescription": "Number of VNA credits in the Rx side that are waitng to be returned back across the link.",
166062201368SIan Rogers        "Unit": "QPI LL"
16616b138c7bSAndi Kleen    }
16626b138c7bSAndi Kleen]
1663