vmm: Fix use-after-free in load_elf()
[akaros.git] / user / perfmon / events / intel_ivbep_unc_qpi_events.h
1 /*
2  * Copyright (c) 2014 Google Inc. All rights reserved
3  * Contributed by Stephane Eranian <eranian@gmail.com>
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy
6  * of this software and associated documentation files (the "Software"), to deal
7  * in the Software without restriction, including without limitation the rights
8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9  * of the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
17  * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
20  * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21  *
22  * This file is part of libpfm, a performance monitoring support library for
23  * applications on Linux.
24  *
25  * This file has been automatically generated.
26  *
27  * PMU: ivbep_unc_qpi (Intel IvyBridge-EP QPI uncore)
28  */
29
30 static const intel_x86_umask_t ivbep_unc_q_direct2core[]={
31   { .uname = "FAILURE_CREDITS",
32     .udesc  = "Number of spawn failures due to lack of Egress credits",
33     .ucode  = 0x200,
34     .uflags = INTEL_X86_NCOMBO,
35   },
36   { .uname = "FAILURE_CREDITS_RBT",
37     .udesc  = "Number of spawn failures due to lack of Egress credit and route-back table (RBT) bit was not set",
38     .ucode  = 0x800,
39     .uflags = INTEL_X86_NCOMBO,
40   },
41   { .uname = "FAILURE_RBT_HIT",
42     .udesc  = "Number of spawn failures because route-back table (RBT) specified that the transaction should not trigger a direct2core transaction",
43     .ucode  = 0x400,
44     .uflags = INTEL_X86_NCOMBO,
45   },
46   { .uname = "SUCCESS_RBT_HIT",
47     .udesc  = "Number of spawn successes",
48     .ucode  = 0x100,
49     .uflags = INTEL_X86_NCOMBO,
50   },
51   { .uname = "FAILURE_MISS",
52     .udesc  = "Number of spawn failures due to RBT tag not matching although the valid bit was set and there was enough Egress credits",
53     .ucode  = 0x1000,
54     .uflags = INTEL_X86_NCOMBO,
55   },
56   { .uname = "FAILURE_CREDITS_MISS",
57     .udesc  = "Number of spawn failures due to RBT tag not matching and they were not enough Egress credits. The valid bit was set",
58     .ucode  = 0x2000,
59     .uflags = INTEL_X86_NCOMBO,
60   },
61   { .uname = "FAILURE_RBT_MISS",
62     .udesc  = "Number of spawn failures due to RBT tag not matching, the valid bit was not set but there were enough Egress credits",
63     .ucode  = 0x4000,
64     .uflags = INTEL_X86_NCOMBO,
65   },
66   { .uname = "FAILURE_CREDITS_RBT_MISS",
67     .udesc  = "Number of spawn failures due to RBT tag not matching, the valid bit was not set and there were not enough Egress credits",
68     .ucode  = 0x8000,
69     .uflags = INTEL_X86_NCOMBO,
70   },
71 };
72
73 static const intel_x86_umask_t ivbep_unc_q_rxl_credits_consumed_vn0[]={
74   { .uname = "DRS",
75     .udesc  = "Number of times VN0 consumed for DRS message class",
76     .ucode  = 0x100,
77     .uflags = INTEL_X86_NCOMBO,
78   },
79   { .uname = "HOM",
80     .udesc  = "Number of times VN0 consumed for HOM message class",
81     .ucode  = 0x800,
82     .uflags = INTEL_X86_NCOMBO,
83   },
84   { .uname = "NCB",
85     .udesc  = "Number of times VN0 consumed for NCB message class",
86     .ucode  = 0x200,
87     .uflags = INTEL_X86_NCOMBO,
88   },
89   { .uname = "NCS",
90     .udesc  = "Number of times VN0 consumed for NCS message class",
91     .ucode  = 0x400,
92     .uflags = INTEL_X86_NCOMBO,
93   },
94   { .uname = "NDR",
95     .udesc  = "Number of times VN0 consumed for NDR message class",
96     .ucode  = 0x2000,
97     .uflags = INTEL_X86_NCOMBO,
98   },
99   { .uname = "SNP",
100     .udesc  = "Number of times VN0 consumed for SNP message class",
101     .ucode  = 0x1000,
102     .uflags = INTEL_X86_NCOMBO,
103   },
104 };
105
106 static const intel_x86_umask_t ivbep_unc_q_rxl_credits_consumed_vn1[]={
107   { .uname = "DRS",
108     .udesc  = "Number of times VN1 consumed for DRS message class",
109     .ucode  = 0x100,
110     .uflags = INTEL_X86_NCOMBO,
111   },
112   { .uname = "HOM",
113     .udesc  = "Number of times VN1 consumed for HOM message class",
114     .ucode  = 0x800,
115     .uflags = INTEL_X86_NCOMBO,
116   },
117   { .uname = "NCB",
118     .udesc  = "Number of times VN1 consumed for NCB message class",
119     .ucode  = 0x200,
120     .uflags = INTEL_X86_NCOMBO,
121   },
122   { .uname = "NCS",
123     .udesc  = "Number of times VN1 consumed for NCS message class",
124     .ucode  = 0x400,
125     .uflags = INTEL_X86_NCOMBO,
126   },
127   { .uname = "NDR",
128     .udesc  = "Number of times VN1 consumed for NDR message class",
129     .ucode  = 0x2000,
130     .uflags = INTEL_X86_NCOMBO,
131   },
132   { .uname = "SNP",
133     .udesc  = "Number of times VN1 consumed for SNP message class",
134     .ucode  = 0x1000,
135     .uflags = INTEL_X86_NCOMBO,
136   },
137 };
138
139
140 static const intel_x86_umask_t ivbep_unc_q_rxl_flits_g0[]={
141   { .uname = "DATA",
142     .udesc  = "Number of data flits over QPI",
143     .ucode  = 0x200,
144     .uflags = INTEL_X86_NCOMBO,
145   },
146   { .uname = "IDLE",
147     .udesc  = "Number of flits over QPI that do not hold protocol payload",
148     .ucode  = 0x100,
149     .uflags = INTEL_X86_NCOMBO,
150   },
151   { .uname = "NON_DATA",
152     .udesc  = "Number of non-NULL non-data flits over QPI",
153     .ucode  = 0x400,
154     .uflags = INTEL_X86_NCOMBO,
155   },
156 };
157
158 static const intel_x86_umask_t ivbep_unc_q_txl_flits_g0[]={
159   { .uname = "DATA",
160     .udesc  = "Number of data flits over QPI",
161     .ucode  = 0x200,
162     .uflags = INTEL_X86_NCOMBO,
163   },
164   { .uname = "NON_DATA",
165     .udesc  = "Number of non-NULL non-data flits over QPI",
166     .ucode  = 0x400,
167     .uflags = INTEL_X86_NCOMBO,
168   },
169 };
170
171 static const intel_x86_umask_t ivbep_unc_q_rxl_flits_g1[]={
172   { .uname = "DRS",
173     .udesc  = "Number of flits over QPI on the Data Response (DRS) channel",
174     .ucode  = 0x1800,
175     .uflags = INTEL_X86_NCOMBO,
176   },
177   { .uname = "DRS_DATA",
178     .udesc  = "Number of data flits over QPI on the Data Response (DRS) channel",
179     .ucode  = 0x800,
180     .uflags = INTEL_X86_NCOMBO,
181   },
182   { .uname = "DRS_NONDATA",
183     .udesc  = "Number of protocol flits over QPI on the Data Response (DRS) channel",
184     .ucode  = 0x1000,
185     .uflags = INTEL_X86_NCOMBO,
186   },
187   { .uname = "HOM",
188     .udesc  = "Number of flits over QPI on the home channel",
189     .ucode  = 0x600,
190     .uflags = INTEL_X86_NCOMBO,
191   },
192   { .uname = "HOM_NONREQ",
193     .udesc  = "Number of non-request flits over QPI on the home channel",
194     .ucode  = 0x400,
195     .uflags = INTEL_X86_NCOMBO,
196   },
197   { .uname = "HOM_REQ",
198     .udesc  = "Number of data requests over QPI on the home channel",
199     .ucode  = 0x200,
200     .uflags = INTEL_X86_NCOMBO,
201   },
202   { .uname = "SNP",
203     .udesc  = "Number of snoop requests flits over QPI",
204     .ucode  = 0x100,
205     .uflags = INTEL_X86_NCOMBO,
206   },
207 };
208
209 static const intel_x86_umask_t ivbep_unc_q_rxl_flits_g2[]={
210   { .uname = "NCB",
211     .udesc  = "Number of non-coherent bypass flits",
212     .ucode  = 0xc00,
213     .uflags = INTEL_X86_NCOMBO,
214   },
215   { .uname = "NCB_DATA",
216     .udesc  = "Number of non-coherent data flits",
217     .ucode  = 0x400,
218     .uflags = INTEL_X86_NCOMBO,
219   },
220   { .uname = "NCB_NONDATA",
221     .udesc  = "Number of bypass non-data flits",
222     .ucode  = 0x800,
223     .uflags = INTEL_X86_NCOMBO,
224   },
225   { .uname = "NCS",
226     .udesc  = "Number of non-coherent standard (NCS) flits",
227     .ucode  = 0x1000,
228     .uflags = INTEL_X86_NCOMBO,
229   },
230   { .uname = "NDR_AD",
231     .udesc  = "Number of flits received over Non-data response (NDR) channel",
232     .ucode  = 0x100,
233     .uflags = INTEL_X86_NCOMBO,
234   },
235   { .uname = "NDR_AK",
236     .udesc  = "Number of flits received on the Non-data response (NDR) channel)",
237     .ucode  = 0x200,
238     .uflags = INTEL_X86_NCOMBO,
239   },
240 };
241
242 static const intel_x86_umask_t ivbep_unc_q_txr_ad_hom_credit_acquired[]={
243   { .uname = "VN0",
244     .udesc  = "for VN0",
245     .ucode  = 0x100,
246   },
247   { .uname = "VN1",
248     .udesc  = "for VN1",
249     .ucode  = 0x200,
250   },
251 };
252
253  static const intel_x86_umask_t ivbep_unc_q_txr_bl_drs_credit_acquired[]={
254   { .uname = "VN0",
255     .udesc  = "for VN0",
256     .ucode  = 0x100,
257     .uflags = INTEL_X86_NCOMBO,
258   },
259   { .uname = "VN1",
260     .udesc  = "for VN1",
261     .ucode  = 0x200,
262     .uflags = INTEL_X86_NCOMBO,
263   },
264   { .uname = "VN_SHR",
265     .udesc  = "for shared VN",
266     .ucode  = 0x400,
267     .uflags = INTEL_X86_NCOMBO,
268   },
269 };
270
271 static const intel_x86_entry_t intel_ivbep_unc_q_pe[]={
272   { .name = "UNC_Q_CLOCKTICKS",
273     .desc = "Number of qfclks",
274     .code = 0x14,
275     .cntmsk = 0xf,
276     .modmsk = IVBEP_UNC_QPI_ATTRS,
277   },
278   { .name = "UNC_Q_CTO_COUNT",
279     .desc = "Count of CTO Events",
280     .code = 0x38 | (1ULL << 21), /* sel_ext */
281     .cntmsk = 0xf,
282     .modmsk = IVBEP_UNC_QPI_ATTRS,
283   },
284   { .name = "UNC_Q_DIRECT2CORE",
285     .desc = "Direct 2 Core Spawning",
286     .code = 0x13,
287     .cntmsk = 0xf,
288     .ngrp = 1,
289     .modmsk = IVBEP_UNC_QPI_ATTRS,
290     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_direct2core),
291     .umasks  = ivbep_unc_q_direct2core
292   },
293   { .name = "UNC_Q_L1_POWER_CYCLES",
294     .desc = "Cycles in L1",
295     .code = 0x12,
296     .cntmsk = 0xf,
297     .modmsk = IVBEP_UNC_QPI_ATTRS,
298   },
299   { .name = "UNC_Q_RXL0P_POWER_CYCLES",
300     .desc = "Cycles in L0p",
301     .code = 0x10,
302     .cntmsk = 0xf,
303     .modmsk = IVBEP_UNC_QPI_ATTRS,
304   },
305   { .name = "UNC_Q_RXL0_POWER_CYCLES",
306     .desc = "Cycles in L0",
307     .code = 0xf,
308     .cntmsk = 0xf,
309     .modmsk = IVBEP_UNC_QPI_ATTRS,
310   },
311   { .name = "UNC_Q_RXL_BYPASSED",
312     .desc = "Rx Flit Buffer Bypassed",
313     .code = 0x9,
314     .cntmsk = 0xf,
315     .modmsk = IVBEP_UNC_QPI_ATTRS,
316   },
317   { .name = "UNC_Q_RXL_CREDITS_CONSUMED_VN0",
318     .desc = "VN0 Credit Consumed",
319     .code = 0x1e | (1ULL << 21), /* sel_ext */
320     .cntmsk = 0xf,
321     .ngrp = 1,
322     .modmsk = IVBEP_UNC_QPI_ATTRS,
323     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_credits_consumed_vn0),
324     .umasks  = ivbep_unc_q_rxl_credits_consumed_vn0
325   },
326   { .name = "UNC_Q_RXL_CREDITS_CONSUMED_VN1",
327     .desc = "VN1 Credit Consumed",
328     .code = 0x39 | (1ULL << 21), /* sel_ext */
329     .cntmsk = 0xf,
330     .ngrp = 1,
331     .modmsk = IVBEP_UNC_QPI_ATTRS,
332     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_credits_consumed_vn1),
333     .umasks  = ivbep_unc_q_rxl_credits_consumed_vn1
334   },
335   { .name = "UNC_Q_RXL_CREDITS_CONSUMED_VNA",
336     .desc = "VNA Credit Consumed",
337     .code = 0x1d | (1ULL << 21), /* sel_ext */
338     .cntmsk = 0xf,
339     .modmsk = IVBEP_UNC_QPI_ATTRS,
340   },
341   { .name = "UNC_Q_RXL_CYCLES_NE",
342     .desc = "RxQ Cycles Not Empty",
343     .code = 0xa,
344     .cntmsk = 0xf,
345     .modmsk = IVBEP_UNC_QPI_ATTRS,
346   },
347   { .name = "UNC_Q_RXL_FLITS_G0",
348     .desc = "Flits Received - Group 0",
349     .code = 0x1,
350     .cntmsk = 0xf,
351     .ngrp = 1,
352     .modmsk = IVBEP_UNC_QPI_ATTRS,
353     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_flits_g0),
354     .umasks  = ivbep_unc_q_rxl_flits_g0
355   },
356   { .name = "UNC_Q_RXL_FLITS_G1",
357     .desc = "Flits Received - Group 1",
358     .code = 0x2 | (1ULL << 21), /* sel_ext */
359     .cntmsk = 0xf,
360     .ngrp = 1,
361     .modmsk = IVBEP_UNC_QPI_ATTRS,
362     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_flits_g1),
363     .umasks  = ivbep_unc_q_rxl_flits_g1
364   },
365
366   { .name = "UNC_Q_RXL_FLITS_G2",
367     .desc = "Flits Received - Group 2",
368     .code = 0x3 | (1ULL << 21), /* sel_ext */
369     .cntmsk = 0xf,
370     .ngrp = 1,
371     .modmsk = IVBEP_UNC_QPI_ATTRS,
372     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_flits_g2),
373     .umasks  = ivbep_unc_q_rxl_flits_g2
374   },
375   { .name = "UNC_Q_RXL_INSERTS",
376     .desc = "Rx Flit Buffer Allocations",
377     .code = 0x8,
378     .cntmsk = 0xf,
379     .modmsk = IVBEP_UNC_QPI_ATTRS,
380   },
381   { .name = "UNC_Q_RXL_INSERTS_DRS",
382     .desc = "Rx Flit Buffer Allocations - DRS",
383     .code = 0x9 | (1ULL << 21), /* sel_ext */
384     .cntmsk = 0xf,
385     .modmsk = IVBEP_UNC_QPI_ATTRS,
386     .ngrp = 1,
387     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
388     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
389   },
390   { .name = "UNC_Q_RXL_INSERTS_HOM",
391     .desc = "Rx Flit Buffer Allocations - HOM",
392     .code = 0xc | (1ULL << 21), /* sel_ext */
393     .cntmsk = 0xf,
394     .modmsk = IVBEP_UNC_QPI_ATTRS,
395     .ngrp = 1,
396     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
397     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
398   },
399   { .name = "UNC_Q_RXL_INSERTS_NCB",
400     .desc = "Rx Flit Buffer Allocations - NCB",
401     .code = 0xa | (1ULL << 21), /* sel_ext */
402     .cntmsk = 0xf,
403     .modmsk = IVBEP_UNC_QPI_ATTRS,
404     .ngrp = 1,
405     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
406     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
407   },
408   { .name = "UNC_Q_RXL_INSERTS_NCS",
409     .desc = "Rx Flit Buffer Allocations - NCS",
410     .code = 0xb | (1ULL << 21), /* sel_ext */
411     .cntmsk = 0xf,
412     .modmsk = IVBEP_UNC_QPI_ATTRS,
413     .ngrp = 1,
414     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
415     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
416   },
417   { .name = "UNC_Q_RXL_INSERTS_NDR",
418     .desc = "Rx Flit Buffer Allocations - NDR",
419     .code = 0xe | (1ULL << 21), /* sel_ext */
420     .cntmsk = 0xf,
421     .modmsk = IVBEP_UNC_QPI_ATTRS,
422     .ngrp = 1,
423     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
424     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
425   },
426   { .name = "UNC_Q_RXL_INSERTS_SNP",
427     .desc = "Rx Flit Buffer Allocations - SNP",
428     .code = 0xd | (1ULL << 21), /* sel_ext */
429     .cntmsk = 0xf,
430     .modmsk = IVBEP_UNC_QPI_ATTRS,
431     .ngrp = 1,
432     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
433     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
434   },
435   { .name = "UNC_Q_RXL_OCCUPANCY",
436     .desc = "RxQ Occupancy - All Packets",
437     .code = 0xb,
438     .cntmsk = 0xf,
439     .modmsk = IVBEP_UNC_QPI_ATTRS,
440   },
441   { .name = "UNC_Q_RXL_OCCUPANCY_DRS",
442     .desc = "RxQ Occupancy - DRS",
443     .code = 0x15 | (1ULL << 21), /* sel_ext */
444     .cntmsk = 0xf,
445     .modmsk = IVBEP_UNC_QPI_ATTRS,
446     .ngrp = 1,
447     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
448     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
449   },
450   { .name = "UNC_Q_RXL_OCCUPANCY_HOM",
451     .desc = "RxQ Occupancy - HOM",
452     .code = 0x18 | (1ULL << 21), /* sel_ext */
453     .cntmsk = 0xf,
454     .modmsk = IVBEP_UNC_QPI_ATTRS,
455     .ngrp = 1,
456     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
457     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
458   },
459   { .name = "UNC_Q_RXL_OCCUPANCY_NCB",
460     .desc = "RxQ Occupancy - NCB",
461     .code = 0x16 | (1ULL << 21), /* sel_ext */
462     .cntmsk = 0xf,
463     .modmsk = IVBEP_UNC_QPI_ATTRS,
464     .ngrp = 1,
465     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
466     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
467   },
468   { .name = "UNC_Q_RXL_OCCUPANCY_NCS",
469     .desc = "RxQ Occupancy - NCS",
470     .code = 0x17 | (1ULL << 21), /* sel_ext */
471     .cntmsk = 0xf,
472     .modmsk = IVBEP_UNC_QPI_ATTRS,
473     .ngrp = 1,
474     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
475     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
476   },
477   { .name = "UNC_Q_RXL_OCCUPANCY_NDR",
478     .desc = "RxQ Occupancy - NDR",
479     .code = 0x1a | (1ULL << 21), /* sel_ext */
480     .cntmsk = 0xf,
481     .modmsk = IVBEP_UNC_QPI_ATTRS,
482     .ngrp = 1,
483     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
484     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
485   },
486   { .name = "UNC_Q_RXL_OCCUPANCY_SNP",
487     .desc = "RxQ Occupancy - SNP",
488     .code = 0x19 | (1ULL << 21), /* sel_ext */
489     .cntmsk = 0xf,
490     .modmsk = IVBEP_UNC_QPI_ATTRS,
491     .ngrp = 1,
492     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
493     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
494   },
495   { .name = "UNC_Q_TXL0P_POWER_CYCLES",
496     .desc = "Cycles in L0p",
497     .code = 0xd,
498     .cntmsk = 0xf,
499     .modmsk = IVBEP_UNC_QPI_ATTRS,
500   },
501   { .name = "UNC_Q_TXL0_POWER_CYCLES",
502     .desc = "Cycles in L0",
503     .code = 0xc,
504     .cntmsk = 0xf,
505     .modmsk = IVBEP_UNC_QPI_ATTRS,
506   },
507   { .name = "UNC_Q_TXL_BYPASSED",
508     .desc = "Tx Flit Buffer Bypassed",
509     .code = 0x5,
510     .cntmsk = 0xf,
511     .modmsk = IVBEP_UNC_QPI_ATTRS,
512   },
513   { .name = "UNC_Q_TXL_CYCLES_NE",
514     .desc = "Tx Flit Buffer Cycles not Empty",
515     .code = 0x6,
516     .cntmsk = 0xf,
517     .modmsk = IVBEP_UNC_QPI_ATTRS,
518   },
519   { .name = "UNC_Q_TXL_FLITS_G0",
520     .desc = "Flits Transferred - Group 0",
521     .code = 0x0,
522     .cntmsk = 0xf,
523     .ngrp = 1,
524     .modmsk = IVBEP_UNC_QPI_ATTRS,
525     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txl_flits_g0),
526     .umasks  = ivbep_unc_q_txl_flits_g0
527   },
528   { .name = "UNC_Q_TXL_FLITS_G1",
529     .desc = "Flits Transferred - Group 1",
530     .code = 0x0 | (1ULL << 21), /* sel_ext */
531     .cntmsk = 0xf,
532     .ngrp = 1,
533     .modmsk = IVBEP_UNC_QPI_ATTRS,
534     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_flits_g1),
535     .umasks  = ivbep_unc_q_rxl_flits_g1 /* shared with rxl_flits_g1 */
536   },
537   { .name = "UNC_Q_TXL_FLITS_G2",
538     .desc = "Flits Transferred - Group 2",
539     .code = 0x1 | (1ULL << 21), /* sel_ext */
540     .cntmsk = 0xf,
541     .ngrp = 1,
542     .modmsk = IVBEP_UNC_QPI_ATTRS,
543     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_rxl_flits_g2),
544     .umasks  = ivbep_unc_q_rxl_flits_g2 /* shared with rxl_flits_g2 */
545   },
546   { .name = "UNC_Q_TXL_INSERTS",
547     .desc = "Tx Flit Buffer Allocations",
548     .code = 0x4,
549     .cntmsk = 0xf,
550     .modmsk = IVBEP_UNC_QPI_ATTRS,
551   },
552   { .name = "UNC_Q_TXL_OCCUPANCY",
553     .desc = "Tx Flit Buffer Occupancy",
554     .code = 0x7,
555     .cntmsk = 0xf,
556     .modmsk = IVBEP_UNC_QPI_ATTRS,
557   },
558   { .name = "UNC_Q_VNA_CREDIT_RETURNS",
559     .desc = "VNA Credits Returned",
560     .code = 0x1c | (1ULL << 21), /* sel_ext */
561     .cntmsk = 0xf,
562     .modmsk = IVBEP_UNC_QPI_ATTRS,
563   },
564   { .name = "UNC_Q_VNA_CREDIT_RETURN_OCCUPANCY",
565     .desc = "VNA Credits Pending Return - Occupancy",
566     .code = 0x1b | (1ULL << 21), /* sel_ext */
567     .cntmsk = 0xf,
568     .modmsk = IVBEP_UNC_QPI_ATTRS,
569   },
570   { .name = "UNC_Q_TXR_AD_HOM_CREDIT_ACQUIRED",
571     .desc = "R3QPI Egress credit occupancy AD HOM",
572     .code = 0x26 | (1ULL << 21), /* sel_ext */
573     .cntmsk = 0xf,
574     .ngrp = 1,
575     .modmsk = IVBEP_UNC_QPI_ATTRS,
576     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
577     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
578   },
579   { .name = "UNC_Q_TXR_AD_HOM_CREDIT_OCCUPANCY",
580     .desc = "R3QPI Egress credit occupancy AD HOM",
581     .code = 0x22 | (1ULL << 21), /* sel_ext */
582     .cntmsk = 0xf,
583     .ngrp = 1,
584     .modmsk = IVBEP_UNC_QPI_ATTRS,
585     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
586     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
587   },
588   { .name = "UNC_Q_TXR_AD_NDR_CREDIT_ACQUIRED",
589     .desc = "R3QPI Egress credit occupancy AD NDR",
590     .code = 0x28 | (1ULL << 21), /* sel_ext */
591     .cntmsk = 0xf,
592     .ngrp = 1,
593     .modmsk = IVBEP_UNC_QPI_ATTRS,
594     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
595     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
596   },
597   { .name = "UNC_Q_TXR_AD_NDR_CREDIT_OCCUPANCY",
598     .desc = "R3QPI Egress credit occupancy AD NDR",
599     .code = 0x24 | (1ULL << 21), /* sel_ext */
600     .cntmsk = 0xf,
601     .ngrp = 1,
602     .modmsk = IVBEP_UNC_QPI_ATTRS,
603     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
604     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
605   },
606   { .name = "UNC_Q_TXR_AD_SNP_CREDIT_ACQUIRED",
607     .desc = "R3QPI Egress credit occupancy AD SNP",
608     .code = 0x27 | (1ULL << 21), /* sel_ext */
609     .cntmsk = 0xf,
610     .ngrp = 1,
611     .modmsk = IVBEP_UNC_QPI_ATTRS,
612     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
613     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
614   },
615   { .name = "UNC_Q_TXR_AD_SNP_CREDIT_OCCUPANCY",
616     .desc = "R3QPI Egress credit occupancy AD SNP",
617     .code = 0x23 | (1ULL << 21), /* sel_ext */
618     .cntmsk = 0xf,
619     .ngrp = 1,
620     .modmsk = IVBEP_UNC_QPI_ATTRS,
621     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
622     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
623   },
624   { .name = "UNC_Q_TXR_AK_NDR_CREDIT_ACQUIRED",
625     .desc = "R3QPI Egress credit occupancy AK NDR",
626     .code = 0x29 | (1ULL << 21), /* sel_ext */
627     .cntmsk = 0xf,
628     .ngrp = 1,
629     .modmsk = IVBEP_UNC_QPI_ATTRS,
630     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
631     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
632   },
633   { .name = "UNC_Q_TXR_AK_NDR_CREDIT_OCCUPANCY",
634     .desc = "R3QPI Egress credit occupancy AD NDR",
635     .code = 0x25 | (1ULL << 21), /* sel_ext */
636     .cntmsk = 0xf,
637     .ngrp = 1,
638     .modmsk = IVBEP_UNC_QPI_ATTRS,
639     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
640     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
641   },
642   { .name = "UNC_Q_TXR_BL_DRS_CREDIT_ACQUIRED",
643     .desc = "R3QPI Egress credit occupancy BL DRS",
644     .code = 0x2a | (1ULL << 21), /* sel_ext */
645     .cntmsk = 0xf,
646     .ngrp = 1,
647     .modmsk = IVBEP_UNC_QPI_ATTRS,
648     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_bl_drs_credit_acquired),
649     .umasks  = ivbep_unc_q_txr_bl_drs_credit_acquired,
650   },
651   { .name = "UNC_Q_TXR_BL_DRS_CREDIT_OCCUPANCY",
652     .desc = "R3QPI Egress credit occupancy BL DRS",
653     .code = 0x1f | (1ULL << 21), /* sel_ext */
654     .cntmsk = 0xf,
655     .ngrp = 1,
656     .modmsk = IVBEP_UNC_QPI_ATTRS,
657     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_bl_drs_credit_acquired), /* shared */
658     .umasks  = ivbep_unc_q_txr_bl_drs_credit_acquired,
659   },
660   { .name = "UNC_Q_TXR_BL_NCB_CREDIT_ACQUIRED",
661     .desc = "R3QPI Egress credit occupancy BL NCB",
662     .code = 0x2b | (1ULL << 21), /* sel_ext */
663     .cntmsk = 0xf,
664     .ngrp = 1,
665     .modmsk = IVBEP_UNC_QPI_ATTRS,
666     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
667     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
668   },
669   { .name = "UNC_Q_TXR_BL_NCB_CREDIT_OCCUPANCY",
670     .desc = "R3QPI Egress credit occupancy BL NCB",
671     .code = 0x20 | (1ULL << 21), /* sel_ext */
672     .cntmsk = 0xf,
673     .ngrp = 1,
674     .modmsk = IVBEP_UNC_QPI_ATTRS,
675     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
676     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
677   },
678   { .name = "UNC_Q_TXR_BL_NCS_CREDIT_ACQUIRED",
679     .desc = "R3QPI Egress credit occupancy BL NCS",
680     .code = 0x2c | (1ULL << 21), /* sel_ext */
681     .cntmsk = 0xf,
682     .ngrp = 1,
683     .modmsk = IVBEP_UNC_QPI_ATTRS,
684     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired),
685     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
686   },
687   { .name = "UNC_Q_TXR_BL_NCS_CREDIT_OCCUPANCY",
688     .desc = "R3QPI Egress credit occupancy BL NCS",
689     .code = 0x21 | (1ULL << 21), /* sel_ext */
690     .cntmsk = 0xf,
691     .ngrp = 1,
692     .modmsk = IVBEP_UNC_QPI_ATTRS,
693     .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_q_txr_ad_hom_credit_acquired), /* shared */
694     .umasks  = ivbep_unc_q_txr_ad_hom_credit_acquired,
695   },
696 };