vmm: Fix use-after-free in load_elf()
[akaros.git] / user / perfmon / events / intel_snbep_unc_ha_events.h
1 /*
2  * Copyright (c) 2012 Google, Inc
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: snbep_unc_ha (Intel SandyBridge-EP HA uncore PMU)
28  */
29
30 static const intel_x86_umask_t snbep_unc_h_conflict_cycles[]={
31   { .uname = "CONFLICT",
32     .udesc  = "Number of cycles that we are handling conflicts",
33     .ucode  = 0x200,
34     .uflags = INTEL_X86_NCOMBO,
35   },
36   { .uname = "NO_CONFLICT",
37     .udesc  = "Number of cycles that we are not handling conflicts",
38     .ucode  = 0x100,
39     .uflags = INTEL_X86_NCOMBO,
40   },
41 };
42
43 static const intel_x86_umask_t snbep_unc_h_directory_lookup[]={
44   { .uname = "NO_SNP",
45     .udesc  = "Snoop not needed",
46     .ucode  = 0x200,
47     .uflags = INTEL_X86_NCOMBO,
48   },
49   { .uname = "SNP",
50     .udesc  = "Snoop needed",
51     .ucode  = 0x100,
52     .uflags = INTEL_X86_NCOMBO,
53   },
54 };
55
56 static const intel_x86_umask_t snbep_unc_h_directory_update[]={
57   { .uname = "ANY",
58     .udesc  = "Counts any directory update",
59     .ucode  = 0x300,
60     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
61   },
62   { .uname = "CLEAR",
63     .udesc  = "Directory clears",
64     .ucode  = 0x200,
65     .uflags = INTEL_X86_NCOMBO,
66   },
67   { .uname = "SET",
68     .udesc  = "Directory set",
69     .ucode  = 0x100,
70     .uflags = INTEL_X86_NCOMBO,
71   },
72 };
73
74 static const intel_x86_umask_t snbep_unc_h_igr_no_credit_cycles[]={
75   { .uname = "AD_QPI0",
76     .udesc  = "AD to QPI link 0",
77     .ucode  = 0x100,
78     .uflags = INTEL_X86_NCOMBO,
79   },
80   { .uname = "AD_QPI1",
81     .udesc  = "AD to QPI link 1",
82     .ucode  = 0x200,
83     .uflags = INTEL_X86_NCOMBO,
84   },
85   { .uname = "BL_QPI0",
86     .udesc  = "BL to QPI link 0",
87     .ucode  = 0x400,
88     .uflags = INTEL_X86_NCOMBO,
89   },
90   { .uname = "BL_QPI1",
91     .udesc  = "BL to QPI link 1",
92     .ucode  = 0x800,
93     .uflags = INTEL_X86_NCOMBO,
94   },
95 };
96
97 static const intel_x86_umask_t snbep_unc_h_imc_writes[]={
98   { .uname = "ALL",
99     .udesc  = "Counts all writes",
100     .ucode  = 0xf00,
101     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
102   },
103   { .uname = "FULL",
104     .udesc  = "Counts full line non ISOCH",
105     .ucode  = 0x100,
106     .uflags = INTEL_X86_NCOMBO,
107   },
108   { .uname = "FULL_ISOCH",
109     .udesc  = "Counts ISOCH full line",
110     .ucode  = 0x400,
111     .uflags = INTEL_X86_NCOMBO,
112   },
113   { .uname = "PARTIAL",
114     .udesc  = "Counts partial non-ISOCH",
115     .ucode  = 0x200,
116     .uflags = INTEL_X86_NCOMBO,
117   },
118   { .uname = "PARTIAL_ISOCH",
119     .udesc  = "Counts ISOCH partial",
120     .ucode  = 0x800,
121     .uflags = INTEL_X86_NCOMBO,
122   },
123 };
124
125 static const intel_x86_umask_t snbep_unc_h_requests[]={
126   { .uname = "READS",
127     .udesc  = "Counts incoming read requests. Good proxy for LLC read misses, incl. RFOs",
128     .ucode  = 0x300,
129     .uflags = INTEL_X86_NCOMBO,
130   },
131   { .uname = "WRITES",
132     .udesc  = "Counts incoming writes",
133     .ucode  = 0xc00,
134     .uflags = INTEL_X86_NCOMBO,
135   },
136 };
137
138 static const intel_x86_umask_t snbep_unc_h_rpq_cycles_no_reg_credits[]={
139   { .uname = "CHN0",
140     .udesc  = "Channel 0",
141     .ucode  = 0x100,
142     .uflags = INTEL_X86_NCOMBO,
143   },
144   { .uname = "CHN1",
145     .udesc  = "Channel 1",
146     .ucode  = 0x200,
147     .uflags = INTEL_X86_NCOMBO,
148   },
149   { .uname = "CHN2",
150     .udesc  = "channel 2",
151     .ucode  = 0x400,
152     .uflags = INTEL_X86_NCOMBO,
153   },
154   { .uname = "CHN3",
155     .udesc  = "Chanell 3",
156     .ucode  = 0x800,
157     .uflags = INTEL_X86_NCOMBO,
158   },
159 };
160
161 static const intel_x86_umask_t snbep_unc_h_tad_requests_g0[]={
162   { .uname = "REGION0",
163     .udesc  = "Counts for TAD Region 0",
164     .ucode  = 0x100,
165     .uflags = INTEL_X86_NCOMBO,
166   },
167   { .uname = "REGION1",
168     .udesc  = "Counts for TAD Region 1",
169     .ucode  = 0x200,
170     .uflags = INTEL_X86_NCOMBO,
171   },
172   { .uname = "REGION2",
173     .udesc  = "Counts for TAD Region 2",
174     .ucode  = 0x400,
175     .uflags = INTEL_X86_NCOMBO,
176   },
177   { .uname = "REGION3",
178     .udesc  = "Counts for TAD Region 3",
179     .ucode  = 0x800,
180     .uflags = INTEL_X86_NCOMBO,
181   },
182   { .uname = "REGION4",
183     .udesc  = "Counts for TAD Region 4",
184     .ucode  = 0x1000,
185     .uflags = INTEL_X86_NCOMBO,
186   },
187   { .uname = "REGION5",
188     .udesc  = "Counts for TAD Region 5",
189     .ucode  = 0x2000,
190     .uflags = INTEL_X86_NCOMBO,
191   },
192   { .uname = "REGION6",
193     .udesc  = "Counts for TAD Region 6",
194     .ucode  = 0x4000,
195     .uflags = INTEL_X86_NCOMBO,
196   },
197   { .uname = "REGION7",
198     .udesc  = "Counts for TAD Region 7",
199     .ucode  = 0x8000,
200     .uflags = INTEL_X86_NCOMBO,
201   },
202 };
203
204 static const intel_x86_umask_t snbep_unc_h_tad_requests_g1[]={
205   { .uname = "REGION8",
206     .udesc  = "Counts for TAD Region 8",
207     .ucode  = 0x100,
208     .uflags = INTEL_X86_NCOMBO,
209   },
210   { .uname = "REGION9",
211     .udesc  = "Counts for TAD Region 9",
212     .ucode  = 0x200,
213     .uflags = INTEL_X86_NCOMBO,
214   },
215   { .uname = "REGION10",
216     .udesc  = "Counts for TAD Region 10",
217     .ucode  = 0x400,
218     .uflags = INTEL_X86_NCOMBO,
219   },
220   { .uname = "REGION11",
221     .udesc  = "Counts for TAD Region 11",
222     .ucode  = 0x800,
223     .uflags = INTEL_X86_NCOMBO,
224   },
225 };
226
227 static const intel_x86_umask_t snbep_unc_h_tracker_inserts[]={
228   { .uname = "ALL",
229     .udesc  = "Counts all requests",
230     .ucode  = 0x300,
231     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
232   },
233 };
234
235 static const intel_x86_umask_t snbep_unc_h_txr_ad[]={
236   { .uname = "NDR",
237     .udesc  = "Counts non-data responses",
238     .ucode  = 0x100,
239     .uflags = INTEL_X86_NCOMBO,
240   },
241   { .uname = "SNP",
242     .udesc  = "Counts outbound snoops send on the ring",
243     .ucode  = 0x200,
244     .uflags = INTEL_X86_NCOMBO,
245   },
246 };
247
248 static const intel_x86_umask_t snbep_unc_h_txr_ad_cycles_full[]={
249   { .uname = "ALL",
250     .udesc  = "Counts cycles full from both schedulers",
251     .ucode  = 0x300,
252     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
253   },
254   { .uname = "SCHED0",
255     .udesc  = "Counts cycles full from scheduler bank 0",
256     .ucode  = 0x100,
257     .uflags = INTEL_X86_NCOMBO,
258   },
259   { .uname = "SCHED1",
260     .udesc  = "Counts cycles full from scheduler bank 1",
261     .ucode  = 0x200,
262     .uflags = INTEL_X86_NCOMBO,
263   },
264 };
265
266 static const intel_x86_umask_t snbep_unc_h_txr_ak_cycles_full[]={
267   { .uname = "ALL",
268     .udesc  = "Counts cycles from both schedulers",
269     .ucode  = 0x300,
270     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
271   },
272   { .uname = "SCHED0",
273     .udesc  = "Counts cycles from scheduler bank 0",
274     .ucode  = 0x100,
275     .uflags = INTEL_X86_NCOMBO,
276   },
277   { .uname = "SCHED1",
278     .udesc  = "Counts cycles from scheduler bank 1",
279     .ucode  = 0x200,
280     .uflags = INTEL_X86_NCOMBO,
281   },
282 };
283
284 static const intel_x86_umask_t snbep_unc_h_txr_bl[]={
285   { .uname = "DRS_CACHE",
286     .udesc  = "Counts data being sent to the cache",
287     .ucode  = 0x100,
288     .uflags = INTEL_X86_NCOMBO,
289   },
290   { .uname = "DRS_CORE",
291     .udesc  = "Counts data being sent directly to the requesting core",
292     .ucode  = 0x200,
293     .uflags = INTEL_X86_NCOMBO,
294   },
295   { .uname = "DRS_QPI",
296     .udesc  = "Counts data being sent to a remote socket over QPI",
297     .ucode  = 0x400,
298     .uflags = INTEL_X86_NCOMBO,
299   },
300 };
301
302 static const intel_x86_umask_t snbep_unc_h_wpq_cycles_no_reg_credits[]={
303   { .uname = "CHN0",
304     .udesc  = "HA iMC CHN0 WPQ Credits Empty - Regular",
305     .ucode  = 0x100,
306     .uflags = INTEL_X86_NCOMBO,
307   },
308   { .uname = "CHN1",
309     .udesc  = "HA iMC CHN0 WPQ Credits Empty - Regular",
310     .ucode  = 0x200,
311     .uflags = INTEL_X86_NCOMBO,
312   },
313   { .uname = "CHN2",
314     .udesc  = "HA iMC CHN0 WPQ Credits Empty - Regular",
315     .ucode  = 0x400,
316     .uflags = INTEL_X86_NCOMBO,
317   },
318   { .uname = "CHN3",
319     .udesc  = "HA iMC CHN0 WPQ Credits Empty - Regular",
320     .ucode  = 0x800,
321     .uflags = INTEL_X86_NCOMBO,
322   },
323 };
324
325 static const intel_x86_umask_t snbep_unc_h_txr_bl_cycles_full[]={
326   { .uname = "ALL",
327     .udesc  = "BL Egress Full",
328     .ucode  = 0x300,
329     .uflags = INTEL_X86_NCOMBO,
330   },
331   { .uname = "SCHED0",
332     .udesc  = "BL Egress Full",
333     .ucode  = 0x100,
334     .uflags = INTEL_X86_NCOMBO,
335   },
336   { .uname = "SCHED1",
337     .udesc  = "BL Egress Full",
338     .ucode  = 0x200,
339     .uflags = INTEL_X86_NCOMBO,
340   },
341 };
342
343 #if 0
344 static const intel_x86_umask_t snbep_unc_h_addr_opc_match[]={
345   { .uname = "FILT",
346     .udesc  = "Number of addr and opcode matches (opc via opc= or address via addr= modifiers)",
347     .ucode  = 0x300,
348     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL | INTEL_X86_ADDR,
349   },
350 };
351 #endif
352
353 static const intel_x86_entry_t intel_snbep_unc_h_pe[]={
354   { .name   = "UNC_H_CLOCKTICKS",
355     .desc   = "HA Uncore clockticks",
356     .modmsk = SNBEP_UNC_HA_ATTRS,
357     .cntmsk = 0xf,
358     .code = 0x00,
359   },
360   { .name = "UNC_H_CONFLICT_CYCLES",
361     .desc = "Conflict Checks",
362     .code = 0xb,
363     .cntmsk = 0xf,
364     .ngrp = 1,
365     .modmsk = SNBEP_UNC_HA_ATTRS,
366     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_conflict_cycles),
367     .umasks  = snbep_unc_h_conflict_cycles,
368   },
369   { .name = "UNC_H_DIRECT2CORE_COUNT",
370     .desc = "Direct2Core Messages Sent",
371     .code = 0x11,
372     .cntmsk = 0xf,
373     .modmsk = SNBEP_UNC_HA_ATTRS,
374   },
375   { .name = "UNC_H_DIRECT2CORE_CYCLES_DISABLED",
376     .desc = "Cycles when Direct2Core was Disabled",
377     .code = 0x12,
378     .cntmsk = 0xf,
379     .modmsk = SNBEP_UNC_HA_ATTRS,
380   },
381   { .name = "UNC_H_DIRECT2CORE_TXN_OVERRIDE",
382     .desc = "Number of Reads that had Direct2Core Overridden",
383     .code = 0x13,
384     .cntmsk = 0xf,
385     .modmsk = SNBEP_UNC_HA_ATTRS,
386   },
387   { .name = "UNC_H_DIRECTORY_LOOKUP",
388     .desc = "Directory Lookups",
389     .code = 0xc,
390     .cntmsk = 0xf,
391     .ngrp = 1,
392     .modmsk = SNBEP_UNC_HA_ATTRS,
393     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_directory_lookup),
394     .umasks  = snbep_unc_h_directory_lookup
395   },
396   { .name = "UNC_H_DIRECTORY_UPDATE",
397     .desc = "Directory Updates",
398     .code = 0xd,
399     .cntmsk = 0xf,
400     .ngrp = 1,
401     .modmsk = SNBEP_UNC_HA_ATTRS,
402     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_directory_update),
403     .umasks  = snbep_unc_h_directory_update
404   },
405   { .name = "UNC_H_IGR_NO_CREDIT_CYCLES",
406     .desc = "Cycles without QPI Ingress Credits",
407     .code = 0x22,
408     .cntmsk = 0xf,
409     .ngrp = 1,
410     .modmsk = SNBEP_UNC_HA_ATTRS,
411     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_igr_no_credit_cycles),
412     .umasks  = snbep_unc_h_igr_no_credit_cycles
413   },
414   { .name = "UNC_H_IMC_RETRY",
415     .desc = "Retry Events",
416     .code = 0x1e,
417     .cntmsk = 0xf,
418     .modmsk = SNBEP_UNC_HA_ATTRS,
419   },
420   { .name = "UNC_H_IMC_WRITES",
421     .desc = "HA to iMC Full Line Writes Issued",
422     .code = 0x1a,
423     .cntmsk = 0xf,
424     .ngrp = 1,
425     .modmsk = SNBEP_UNC_HA_ATTRS,
426     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_imc_writes),
427     .umasks  = snbep_unc_h_imc_writes
428   },
429   { .name = "UNC_H_REQUESTS",
430     .desc = "Read and Write Requests",
431     .code = 0x1,
432     .cntmsk = 0xf,
433     .ngrp = 1,
434     .modmsk = SNBEP_UNC_HA_ATTRS,
435     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_requests),
436     .umasks  = snbep_unc_h_requests
437   },
438   { .name = "UNC_H_RPQ_CYCLES_NO_REG_CREDITS",
439     .desc = "iMC RPQ Credits Empty - Regular",
440     .code = 0x15,
441     .cntmsk = 0xf,
442     .ngrp = 1,
443     .modmsk = SNBEP_UNC_HA_ATTRS,
444     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_rpq_cycles_no_reg_credits),
445     .umasks  = snbep_unc_h_rpq_cycles_no_reg_credits
446   },
447   { .name = "UNC_H_TAD_REQUESTS_G0",
448     .desc = "HA Requests to a TAD Region - Group 0",
449     .code = 0x1b,
450     .cntmsk = 0xf,
451     .ngrp = 1,
452     .modmsk = SNBEP_UNC_HA_ATTRS,
453     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_tad_requests_g0),
454     .umasks  = snbep_unc_h_tad_requests_g0
455   },
456   { .name = "UNC_H_TAD_REQUESTS_G1",
457     .desc = "HA Requests to a TAD Region - Group 1",
458     .code = 0x1c,
459     .cntmsk = 0xf,
460     .ngrp = 1,
461     .modmsk = SNBEP_UNC_HA_ATTRS,
462     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_tad_requests_g1),
463     .umasks  = snbep_unc_h_tad_requests_g1
464   },
465   { .name = "UNC_H_TRACKER_INSERTS",
466     .desc = "Tracker Allocations",
467     .code = 0x6,
468     .cntmsk = 0xf,
469     .ngrp = 1,
470     .modmsk = SNBEP_UNC_HA_ATTRS,
471     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_tracker_inserts),
472     .umasks  = snbep_unc_h_tracker_inserts
473   },
474   { .name = "UNC_H_TXR_AD",
475     .desc = "Outbound NDR Ring Transactions",
476     .code = 0xf,
477     .cntmsk = 0xf,
478     .ngrp = 1,
479     .modmsk = SNBEP_UNC_HA_ATTRS,
480     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_txr_ad),
481     .umasks  = snbep_unc_h_txr_ad
482   },
483   { .name = "UNC_H_TXR_AD_CYCLES_FULL",
484     .desc = "AD Egress Full",
485     .code = 0x2a,
486     .cntmsk = 0xf,
487     .ngrp = 1,
488     .modmsk = SNBEP_UNC_HA_ATTRS,
489     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_txr_ad_cycles_full),
490     .umasks  = snbep_unc_h_txr_ad_cycles_full
491   },
492   { .name = "UNC_H_TXR_AK_CYCLES_FULL",
493     .desc = "AK Egress Full",
494     .code = 0x32,
495     .cntmsk = 0xf,
496     .ngrp = 1,
497     .modmsk = SNBEP_UNC_HA_ATTRS,
498     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_txr_ak_cycles_full),
499     .umasks  = snbep_unc_h_txr_ak_cycles_full
500   },
501   { .name = "UNC_H_TXR_AK_NDR",
502     .desc = "Outbound NDR Ring Transactions",
503     .code = 0xe,
504     .cntmsk = 0xf,
505     .modmsk = SNBEP_UNC_HA_ATTRS,
506   },
507   { .name = "UNC_H_TXR_BL",
508     .desc = "Outbound DRS Ring Transactions to Cache",
509     .code = 0x10,
510     .cntmsk = 0xf,
511     .ngrp = 1,
512     .modmsk = SNBEP_UNC_HA_ATTRS,
513     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_txr_bl),
514     .umasks  = snbep_unc_h_txr_bl
515   },
516   { .name = "UNC_H_TXR_BL_CYCLES_FULL",
517     .desc = "BL Egress Full",
518     .code = 0x36,
519     .cntmsk = 0xf,
520     .ngrp = 1,
521     .modmsk = SNBEP_UNC_HA_ATTRS,
522     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_txr_ak_cycles_full),
523     .umasks  = snbep_unc_h_txr_ak_cycles_full, /* identical to snbep_unc_h_txr_ak_cycles_full */
524   },
525   { .name = "UNC_H_WPQ_CYCLES_NO_REG_CREDITS",
526     .desc = "HA iMC CHN0 WPQ Credits Empty - Regular",
527     .code = 0x18,
528     .cntmsk = 0xf,
529     .ngrp = 1,
530     .modmsk = SNBEP_UNC_HA_ATTRS,
531     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_rpq_cycles_no_reg_credits),
532     .umasks  = snbep_unc_h_rpq_cycles_no_reg_credits , /* identical to snbep_unc_h_rpq_cycles_no_reg_credits */
533   },
534 #if 0
535   { .name = "UNC_H_ADDR_OPC_MATCH",
536     .desc = "QPI address/opcode match",
537     .code = 0x20,
538     .cntmsk = 0xf,
539     .ngrp = 1,
540     .modmsk = SNBEP_UNC_HA_OPC_ATTRS,
541     .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_h_addr_opc_match),
542     .umasks  = snbep_unc_h_addr_opc_match,
543   },
544 #endif
545 };