2 * Copyright (c) 2011 Google, Inc
3 * Contributed by Stephane Eranian <eranian@gmail.com>
5 * Regenerated from previous version by:
6 * Copyright (c) 2007 Advanced Micro Devices, Inc.
7 * Contributed by Robert Richter <robert.richter@amd.com>
9 * Permission is hereby granted, free of charge, to any person obtaining a copy
10 * of this software and associated documentation files (the "Software"), to deal
11 * in the Software without restriction, including without limitation the rights
12 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
13 * of the Software, and to permit persons to whom the Software is furnished to do so,
14 * subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included in all
17 * copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
20 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
21 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
23 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
24 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 * This file is part of libpfm, a performance monitoring support library for
27 * applications on Linux.
29 * This file has been automatically generated.
31 * PMU: amd64_fam10h (AMD64 Fam10h)
36 * May 28 2010 -- Robert Richter, robert.richter@amd.com:
38 * Update from: BIOS and Kernel Developer's Guide (BKDG) For AMD
39 * Family 10h Processors, 31116 Rev 3.48 - April 22, 2010
41 * Feb 06 2009 -- Robert Richter, robert.richter@amd.com:
43 * Update for Family 10h RevD (Istanbul) from: BIOS and Kernel
44 * Developer's Guide (BKDG) For AMD Family 10h Processors, 31116 Rev
45 * 3.20 - February 04, 2009
46 * This file has been automatically generated.
48 * Update for Family 10h RevC (Shanghai) from: BIOS and Kernel
49 * Developer's Guide (BKDG) For AMD Family 10h Processors, 31116 Rev
50 * 3.20 - February 04, 2009
53 * Dec 12 2007 -- Robert Richter, robert.richter@amd.com:
55 * Created from: BIOS and Kernel Developer's Guide (BKDG) For AMD
56 * Family 10h Processors, 31116 Rev 3.00 - September 07, 2007
57 * PMU: amd64_fam10h (AMD64 Fam10h)
60 static const amd64_umask_t amd64_fam10h_dispatched_fpu[]={
62 .udesc = "Add pipe ops excluding load ops and SSE move ops",
65 { .uname = "OPS_MULTIPLY",
66 .udesc = "Multiply pipe ops excluding load ops and SSE move ops",
69 { .uname = "OPS_STORE",
70 .udesc = "Store pipe ops excluding load ops and SSE move ops",
73 { .uname = "OPS_ADD_PIPE_LOAD_OPS",
74 .udesc = "Add pipe load ops and SSE move ops",
77 { .uname = "OPS_MULTIPLY_PIPE_LOAD_OPS",
78 .udesc = "Multiply pipe load ops and SSE move ops",
81 { .uname = "OPS_STORE_PIPE_LOAD_OPS",
82 .udesc = "Store pipe load ops and SSE move ops",
86 .udesc = "All sub-events selected",
88 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
92 static const amd64_umask_t amd64_fam10h_retired_sse_operations[]={
93 { .uname = "SINGLE_ADD_SUB_OPS",
94 .udesc = "Single precision add/subtract ops",
97 { .uname = "SINGLE_MUL_OPS",
98 .udesc = "Single precision multiply ops",
101 { .uname = "SINGLE_DIV_OPS",
102 .udesc = "Single precision divide/square root ops",
105 { .uname = "DOUBLE_ADD_SUB_OPS",
106 .udesc = "Double precision add/subtract ops",
109 { .uname = "DOUBLE_MUL_OPS",
110 .udesc = "Double precision multiply ops",
113 { .uname = "DOUBLE_DIV_OPS",
114 .udesc = "Double precision divide/square root ops",
117 { .uname = "OP_TYPE",
118 .udesc = "Op type: 0=uops. 1=FLOPS",
122 .udesc = "All sub-events selected",
124 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
128 static const amd64_umask_t amd64_fam10h_retired_move_ops[]={
129 { .uname = "LOW_QW_MOVE_UOPS",
130 .udesc = "Merging low quadword move uops",
133 { .uname = "HIGH_QW_MOVE_UOPS",
134 .udesc = "Merging high quadword move uops",
137 { .uname = "ALL_OTHER_MERGING_MOVE_UOPS",
138 .udesc = "All other merging move uops",
141 { .uname = "ALL_OTHER_MOVE_UOPS",
142 .udesc = "All other move uops",
146 .udesc = "All sub-events selected",
148 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
152 static const amd64_umask_t amd64_fam10h_retired_serializing_ops[]={
153 { .uname = "SSE_BOTTOM_EXECUTING_UOPS",
154 .udesc = "SSE bottom-executing uops retired",
157 { .uname = "SSE_BOTTOM_SERIALIZING_UOPS",
158 .udesc = "SSE bottom-serializing uops retired",
161 { .uname = "X87_BOTTOM_EXECUTING_UOPS",
162 .udesc = "X87 bottom-executing uops retired",
165 { .uname = "X87_BOTTOM_SERIALIZING_UOPS",
166 .udesc = "X87 bottom-serializing uops retired",
170 .udesc = "All sub-events selected",
172 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
176 static const amd64_umask_t amd64_fam10h_fp_scheduler_cycles[]={
177 { .uname = "BOTTOM_EXECUTE_CYCLES",
178 .udesc = "Number of cycles a bottom-execute uop is in the FP scheduler",
181 { .uname = "BOTTOM_SERIALIZING_CYCLES",
182 .udesc = "Number of cycles a bottom-serializing uop is in the FP scheduler",
186 .udesc = "All sub-events selected",
188 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
192 static const amd64_umask_t amd64_fam10h_segment_register_loads[]={
222 .udesc = "All sub-events selected",
224 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
228 static const amd64_umask_t amd64_fam10h_locked_ops[]={
229 { .uname = "EXECUTED",
230 .udesc = "The number of locked instructions executed",
233 { .uname = "CYCLES_SPECULATIVE_PHASE",
234 .udesc = "The number of cycles spent in speculative phase",
237 { .uname = "CYCLES_NON_SPECULATIVE_PHASE",
238 .udesc = "The number of cycles spent in non-speculative phase (including cache miss penalty)",
241 { .uname = "CYCLES_WAITING",
242 .udesc = "The number of cycles waiting for a cache hit (cache miss penalty).",
246 .udesc = "All sub-events selected",
248 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
252 static const amd64_umask_t amd64_fam10h_cancelled_store_to_load_forward_operations[]={
253 { .uname = "ADDRESS_MISMATCHES",
254 .udesc = "Address mismatches (starting byte not the same).",
257 { .uname = "STORE_IS_SMALLER_THAN_LOAD",
258 .udesc = "Store is smaller than load.",
261 { .uname = "MISALIGNED",
262 .udesc = "Misaligned.",
266 .udesc = "All sub-events selected",
268 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
272 static const amd64_umask_t amd64_fam10h_data_cache_refills[]={
274 .udesc = "Refill from the Northbridge",
277 { .uname = "L2_SHARED",
278 .udesc = "Shared-state line from L2",
281 { .uname = "L2_EXCLUSIVE",
282 .udesc = "Exclusive-state line from L2",
285 { .uname = "L2_OWNED",
286 .udesc = "Owned-state line from L2",
289 { .uname = "L2_MODIFIED",
290 .udesc = "Modified-state line from L2",
294 .udesc = "All sub-events selected",
296 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
300 static const amd64_umask_t amd64_fam10h_data_cache_refills_from_system[]={
301 { .uname = "INVALID",
309 { .uname = "EXCLUSIVE",
310 .udesc = "Exclusive",
317 { .uname = "MODIFIED",
322 .udesc = "All sub-events selected",
324 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
328 static const amd64_umask_t amd64_fam10h_data_cache_lines_evicted[]={
329 { .uname = "INVALID",
337 { .uname = "EXCLUSIVE",
338 .udesc = "Exclusive",
345 { .uname = "MODIFIED",
349 { .uname = "BY_PREFETCHNTA",
350 .udesc = "Cache line evicted was brought into the cache with by a PrefetchNTA instruction.",
353 { .uname = "NOT_BY_PREFETCHNTA",
354 .udesc = "Cache line evicted was not brought into the cache with by a PrefetchNTA instruction.",
358 .udesc = "All sub-events selected",
360 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
364 static const amd64_umask_t amd64_fam10h_l1_dtlb_miss_and_l2_dtlb_hit[]={
365 { .uname = "L2_4K_TLB_HIT",
366 .udesc = "L2 4K TLB hit",
369 { .uname = "L2_2M_TLB_HIT",
370 .udesc = "L2 2M TLB hit",
374 .udesc = "All sub-events selected",
376 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL | AMD64_FL_TILL_FAM10H_REV_B,
378 { .uname = "L2_1G_TLB_HIT",
379 .udesc = "L2 1G TLB hit",
381 .uflags= AMD64_FL_FAM10H_REV_C,
384 .udesc = "All sub-events selected",
386 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL | AMD64_FL_FAM10H_REV_C,
390 static const amd64_umask_t amd64_fam10h_l1_dtlb_and_l2_dtlb_miss[]={
391 { .uname = "4K_TLB_RELOAD",
392 .udesc = "4K TLB reload",
395 { .uname = "2M_TLB_RELOAD",
396 .udesc = "2M TLB reload",
399 { .uname = "1G_TLB_RELOAD",
400 .udesc = "1G TLB reload",
404 .udesc = "All sub-events selected",
406 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
410 static const amd64_umask_t amd64_fam10h_scrubber_single_bit_ecc_errors[]={
411 { .uname = "SCRUBBER_ERROR",
412 .udesc = "Scrubber error",
415 { .uname = "PIGGYBACK_ERROR",
416 .udesc = "Piggyback scrubber errors",
419 { .uname = "LOAD_PIPE_ERROR",
420 .udesc = "Load pipe error",
423 { .uname = "STORE_WRITE_PIPE_ERROR",
424 .udesc = "Store write pipe error",
428 .udesc = "All sub-events selected",
430 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
434 static const amd64_umask_t amd64_fam10h_prefetch_instructions_dispatched[]={
436 .udesc = "Load (Prefetch, PrefetchT0/T1/T2)",
440 .udesc = "Store (PrefetchW)",
444 .udesc = "NTA (PrefetchNTA)",
448 .udesc = "All sub-events selected",
450 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
454 static const amd64_umask_t amd64_fam10h_dcache_misses_by_locked_instructions[]={
455 { .uname = "DATA_CACHE_MISSES_BY_LOCKED_INSTRUCTIONS",
456 .udesc = "Data cache misses by locked instructions",
460 .udesc = "All sub-events selected",
462 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
466 static const amd64_umask_t amd64_fam10h_l1_dtlb_hit[]={
467 { .uname = "L1_4K_TLB_HIT",
468 .udesc = "L1 4K TLB hit",
471 { .uname = "L1_2M_TLB_HIT",
472 .udesc = "L1 2M TLB hit",
475 { .uname = "L1_1G_TLB_HIT",
476 .udesc = "L1 1G TLB hit",
480 .udesc = "All sub-events selected",
482 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
486 static const amd64_umask_t amd64_fam10h_ineffective_sw_prefetches[]={
487 { .uname = "SW_PREFETCH_HIT_IN_L1",
488 .udesc = "Software prefetch hit in the L1.",
491 { .uname = "SW_PREFETCH_HIT_IN_L2",
492 .udesc = "Software prefetch hit in L2.",
496 .udesc = "All sub-events selected",
498 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
502 static const amd64_umask_t amd64_fam10h_memory_requests[]={
503 { .uname = "NON_CACHEABLE",
504 .udesc = "Requests to non-cacheable (UC) memory",
507 { .uname = "WRITE_COMBINING",
508 .udesc = "Requests to write-combining (WC) memory or WC buffer flushes to WB memory",
511 { .uname = "STREAMING_STORE",
512 .udesc = "Streaming store (SS) requests",
516 .udesc = "All sub-events selected",
518 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
522 static const amd64_umask_t amd64_fam10h_data_prefetches[]={
523 { .uname = "CANCELLED",
524 .udesc = "Cancelled prefetches",
527 { .uname = "ATTEMPTED",
528 .udesc = "Prefetch attempts",
532 .udesc = "All sub-events selected",
534 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
538 static const amd64_umask_t amd64_fam10h_mab_requests[]={
539 { .uname = "BUFFER_0",
542 .uflags= AMD64_FL_NCOMBO,
544 { .uname = "BUFFER_1",
547 .uflags= AMD64_FL_NCOMBO,
549 { .uname = "BUFFER_2",
552 .uflags= AMD64_FL_NCOMBO,
554 { .uname = "BUFFER_3",
557 .uflags= AMD64_FL_NCOMBO,
559 { .uname = "BUFFER_4",
562 .uflags= AMD64_FL_NCOMBO,
564 { .uname = "BUFFER_5",
567 .uflags= AMD64_FL_NCOMBO,
569 { .uname = "BUFFER_6",
572 .uflags= AMD64_FL_NCOMBO,
574 { .uname = "BUFFER_7",
577 .uflags= AMD64_FL_NCOMBO,
579 { .uname = "BUFFER_8",
582 .uflags= AMD64_FL_NCOMBO,
584 { .uname = "BUFFER_9",
587 .uflags= AMD64_FL_NCOMBO,
591 static const amd64_umask_t amd64_fam10h_system_read_responses[]={
592 { .uname = "EXCLUSIVE",
593 .udesc = "Exclusive",
596 { .uname = "MODIFIED",
608 { .uname = "DATA_ERROR",
609 .udesc = "Data Error",
613 .udesc = "All sub-events selected",
615 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
619 static const amd64_umask_t amd64_fam10h_quadwords_written_to_system[]={
620 { .uname = "QUADWORD_WRITE_TRANSFER",
621 .udesc = "Octword write transfer",
625 .udesc = "All sub-events selected",
627 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
631 static const amd64_umask_t amd64_fam10h_requests_to_l2[]={
632 { .uname = "INSTRUCTIONS",
640 { .uname = "TLB_WALK",
641 .udesc = "TLB fill (page table walks)",
645 .udesc = "Tag snoop request",
648 { .uname = "CANCELLED",
649 .udesc = "Cancelled request",
652 { .uname = "HW_PREFETCH_FROM_DC",
653 .udesc = "Hardware prefetch from DC",
657 .udesc = "All sub-events selected",
659 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
663 static const amd64_umask_t amd64_fam10h_l2_cache_miss[]={
664 { .uname = "INSTRUCTIONS",
669 .udesc = "DC fill (includes possible replays, whereas EventSelect 041h does not)",
672 { .uname = "TLB_WALK",
673 .udesc = "TLB page table walk",
676 { .uname = "HW_PREFETCH_FROM_DC",
677 .udesc = "Hardware prefetch from DC",
681 .udesc = "All sub-events selected",
683 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
687 static const amd64_umask_t amd64_fam10h_l2_fill_writeback[]={
688 { .uname = "L2_FILLS",
689 .udesc = "L2 fills (victims from L1 caches, TLB page table walks and data prefetches)",
692 { .uname = "L2_WRITEBACKS",
693 .udesc = "L2 Writebacks to system.",
697 .udesc = "All sub-events selected",
699 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
703 static const amd64_umask_t amd64_fam10h_l1_itlb_miss_and_l2_itlb_miss[]={
704 { .uname = "4K_PAGE_FETCHES",
705 .udesc = "Instruction fetches to a 4K page.",
708 { .uname = "2M_PAGE_FETCHES",
709 .udesc = "Instruction fetches to a 2M page.",
713 .udesc = "All sub-events selected",
715 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
719 static const amd64_umask_t amd64_fam10h_instruction_cache_lines_invalidated[]={
720 { .uname = "INVALIDATING_PROBE_NO_IN_FLIGHT",
721 .udesc = "Invalidating probe that did not hit any in-flight instructions.",
724 { .uname = "INVALIDATING_PROBE_ONE_OR_MORE_IN_FLIGHT",
725 .udesc = "Invalidating probe that hit one or more in-flight instructions.",
729 .udesc = "All sub-events selected",
731 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
735 static const amd64_umask_t amd64_fam10h_retired_mmx_and_fp_instructions[]={
737 .udesc = "X87 instructions",
740 { .uname = "MMX_AND_3DNOW",
741 .udesc = "MMX and 3DNow! instructions",
744 { .uname = "PACKED_SSE_AND_SSE2",
745 .udesc = "SSE instructions (SSE, SSE2, SSE3, and SSE4A)",
749 .udesc = "All sub-events selected",
751 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
755 static const amd64_umask_t amd64_fam10h_retired_fastpath_double_op_instructions[]={
756 { .uname = "POSITION_0",
757 .udesc = "With low op in position 0",
760 { .uname = "POSITION_1",
761 .udesc = "With low op in position 1",
764 { .uname = "POSITION_2",
765 .udesc = "With low op in position 2",
769 .udesc = "All sub-events selected",
771 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
775 static const amd64_umask_t amd64_fam10h_fpu_exceptions[]={
776 { .uname = "X87_RECLASS_MICROFAULTS",
777 .udesc = "X87 reclass microfaults",
780 { .uname = "SSE_RETYPE_MICROFAULTS",
781 .udesc = "SSE retype microfaults",
784 { .uname = "SSE_RECLASS_MICROFAULTS",
785 .udesc = "SSE reclass microfaults",
788 { .uname = "SSE_AND_X87_MICROTRAPS",
789 .udesc = "SSE and x87 microtraps",
793 .udesc = "All sub-events selected",
795 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
799 static const amd64_umask_t amd64_fam10h_dram_accesses_page[]={
801 .udesc = "DCT0 Page hit",
805 .udesc = "DCT0 Page Miss",
808 { .uname = "CONFLICT",
809 .udesc = "DCT0 Page Conflict",
812 { .uname = "DCT1_PAGE_HIT",
813 .udesc = "DCT1 Page hit",
816 { .uname = "DCT1_PAGE_MISS",
817 .udesc = "DCT1 Page Miss",
820 { .uname = "DCT1_PAGE_CONFLICT",
821 .udesc = "DCT1 Page Conflict",
825 .udesc = "All sub-events selected",
827 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
831 static const amd64_umask_t amd64_fam10h_memory_controller_page_table_overflows[]={
832 { .uname = "DCT0_PAGE_TABLE_OVERFLOW",
833 .udesc = "DCT0 Page Table Overflow",
836 { .uname = "DCT1_PAGE_TABLE_OVERFLOW",
837 .udesc = "DCT1 Page Table Overflow",
841 .udesc = "All sub-events selected",
843 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
847 static const amd64_umask_t amd64_fam10h_memory_controller_slot_misses[]={
848 { .uname = "DCT0_COMMAND_SLOTS_MISSED",
849 .udesc = "DCT0 Command Slots Missed",
852 { .uname = "DCT1_COMMAND_SLOTS_MISSED",
853 .udesc = "DCT1 Command Slots Missed",
857 .udesc = "All sub-events selected",
859 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
863 static const amd64_umask_t amd64_fam10h_memory_controller_turnarounds[]={
864 { .uname = "CHIP_SELECT",
865 .udesc = "DCT0 DIMM (chip select) turnaround",
868 { .uname = "READ_TO_WRITE",
869 .udesc = "DCT0 Read to write turnaround",
872 { .uname = "WRITE_TO_READ",
873 .udesc = "DCT0 Write to read turnaround",
876 { .uname = "DCT1_DIMM",
877 .udesc = "DCT1 DIMM (chip select) turnaround",
880 { .uname = "DCT1_READ_TO_WRITE_TURNAROUND",
881 .udesc = "DCT1 Read to write turnaround",
884 { .uname = "DCT1_WRITE_TO_READ_TURNAROUND",
885 .udesc = "DCT1 Write to read turnaround",
889 .udesc = "All sub-events selected",
891 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
895 static const amd64_umask_t amd64_fam10h_memory_controller_bypass[]={
896 { .uname = "HIGH_PRIORITY",
897 .udesc = "Memory controller high priority bypass",
900 { .uname = "LOW_PRIORITY",
901 .udesc = "Memory controller medium priority bypass",
904 { .uname = "DRAM_INTERFACE",
905 .udesc = "DCT0 DCQ bypass",
908 { .uname = "DRAM_QUEUE",
909 .udesc = "DCT1 DCQ bypass",
913 .udesc = "All sub-events selected",
915 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
919 static const amd64_umask_t amd64_fam10h_thermal_status_and_ecc_errors[]={
920 { .uname = "CLKS_DIE_TEMP_TOO_HIGH",
921 .udesc = "Number of times the HTC trip point is crossed",
924 { .uname = "CLKS_TEMP_THRESHOLD_EXCEEDED",
925 .udesc = "Number of clocks when STC trip point active",
928 { .uname = "STC_TRIP_POINTS_CROSSED",
929 .udesc = "Number of times the STC trip point is crossed",
932 { .uname = "CLOCKS_HTC_P_STATE_INACTIVE",
933 .udesc = "Number of clocks HTC P-state is inactive.",
936 { .uname = "CLOCKS_HTC_P_STATE_ACTIVE",
937 .udesc = "Number of clocks HTC P-state is active",
941 .udesc = "All sub-events selected",
943 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
947 static const amd64_umask_t amd64_fam10h_cpu_io_requests_to_memory_io[]={
948 { .uname = "I_O_TO_I_O",
952 { .uname = "I_O_TO_MEM",
953 .udesc = "IO to Mem",
956 { .uname = "CPU_TO_I_O",
957 .udesc = "CPU to IO",
960 { .uname = "CPU_TO_MEM",
961 .udesc = "CPU to Mem",
964 { .uname = "TO_REMOTE_NODE",
965 .udesc = "To remote node",
968 { .uname = "TO_LOCAL_NODE",
969 .udesc = "To local node",
972 { .uname = "FROM_REMOTE_NODE",
973 .udesc = "From remote node",
976 { .uname = "FROM_LOCAL_NODE",
977 .udesc = "From local node",
981 .udesc = "All sub-events selected",
983 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
987 static const amd64_umask_t amd64_fam10h_cache_block[]={
988 { .uname = "VICTIM_WRITEBACK",
989 .udesc = "Victim Block (Writeback)",
992 { .uname = "DCACHE_LOAD_MISS",
993 .udesc = "Read Block (Dcache load miss refill)",
996 { .uname = "SHARED_ICACHE_REFILL",
997 .udesc = "Read Block Shared (Icache refill)",
1000 { .uname = "READ_BLOCK_MODIFIED",
1001 .udesc = "Read Block Modified (Dcache store miss refill)",
1004 { .uname = "READ_TO_DIRTY",
1005 .udesc = "Change-to-Dirty (first store to clean block already in cache)",
1009 .udesc = "All sub-events selected",
1011 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1015 static const amd64_umask_t amd64_fam10h_sized_commands[]={
1016 { .uname = "NON_POSTED_WRITE_BYTE",
1017 .udesc = "Non-Posted SzWr Byte (1-32 bytes) Legacy or mapped IO, typically 1-4 bytes",
1020 { .uname = "NON_POSTED_WRITE_DWORD",
1021 .udesc = "Non-Posted SzWr DW (1-16 dwords) Legacy or mapped IO, typically 1 DWORD",
1024 { .uname = "POSTED_WRITE_BYTE",
1025 .udesc = "Posted SzWr Byte (1-32 bytes) Subcache-line DMA writes, size varies; also flushes of partially-filled Write Combining buffer",
1028 { .uname = "POSTED_WRITE_DWORD",
1029 .udesc = "Posted SzWr DW (1-16 dwords) Block-oriented DMA writes, often cache-line sized; also processor Write Combining buffer flushes",
1032 { .uname = "READ_BYTE_4_BYTES",
1033 .udesc = "SzRd Byte (4 bytes) Legacy or mapped IO",
1036 { .uname = "READ_DWORD_1_16_DWORDS",
1037 .udesc = "SzRd DW (1-16 dwords) Block-oriented DMA reads, typically cache-line size",
1041 .udesc = "All sub-events selected",
1043 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1047 static const amd64_umask_t amd64_fam10h_probe[]={
1049 .udesc = "Probe miss",
1052 { .uname = "HIT_CLEAN",
1053 .udesc = "Probe hit clean",
1056 { .uname = "HIT_DIRTY_NO_MEMORY_CANCEL",
1057 .udesc = "Probe hit dirty without memory cancel (probed by Sized Write or Change2Dirty)",
1060 { .uname = "HIT_DIRTY_WITH_MEMORY_CANCEL",
1061 .udesc = "Probe hit dirty with memory cancel (probed by DMA read or cache refill request)",
1064 { .uname = "UPSTREAM_DISPLAY_REFRESH_READS",
1065 .udesc = "Upstream display refresh/ISOC reads",
1068 { .uname = "UPSTREAM_NON_DISPLAY_REFRESH_READS",
1069 .udesc = "Upstream non-display refresh reads",
1072 { .uname = "UPSTREAM_WRITES",
1073 .udesc = "Upstream ISOC writes",
1076 { .uname = "UPSTREAM_NON_ISOC_WRITES",
1077 .udesc = "Upstream non-ISOC writes",
1081 .udesc = "All sub-events selected",
1083 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1087 static const amd64_umask_t amd64_fam10h_gart[]={
1088 { .uname = "APERTURE_HIT_FROM_CPU",
1089 .udesc = "GART aperture hit on access from CPU",
1092 { .uname = "APERTURE_HIT_FROM_IO",
1093 .udesc = "GART aperture hit on access from IO",
1097 .udesc = "GART miss",
1100 { .uname = "REQUEST_HIT_TABLE_WALK",
1101 .udesc = "GART/DEV Request hit table walk in progress",
1104 { .uname = "DEV_HIT",
1108 { .uname = "DEV_MISS",
1109 .udesc = "DEV miss",
1112 { .uname = "DEV_ERROR",
1113 .udesc = "DEV error",
1116 { .uname = "MULTIPLE_TABLE_WALK",
1117 .udesc = "GART/DEV multiple table walk in progress",
1121 .udesc = "All sub-events selected",
1123 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1127 static const amd64_umask_t amd64_fam10h_memory_controller_requests[]={
1128 { .uname = "WRITE_REQUESTS",
1129 .udesc = "Write requests sent to the DCT",
1132 { .uname = "READ_REQUESTS",
1133 .udesc = "Read requests (including prefetch requests) sent to the DCT",
1136 { .uname = "PREFETCH_REQUESTS",
1137 .udesc = "Prefetch requests sent to the DCT",
1140 { .uname = "32_BYTES_WRITES",
1141 .udesc = "32 Bytes Sized Writes",
1144 { .uname = "64_BYTES_WRITES",
1145 .udesc = "64 Bytes Sized Writes",
1148 { .uname = "32_BYTES_READS",
1149 .udesc = "32 Bytes Sized Reads",
1152 { .uname = "64_BYTES_READS",
1153 .udesc = "64 Byte Sized Reads",
1156 { .uname = "READ_REQUESTS_WHILE_WRITES_REQUESTS",
1157 .udesc = "Read requests sent to the DCT while writes requests are pending in the DCT",
1161 .udesc = "All sub-events selected",
1163 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1167 static const amd64_umask_t amd64_fam10h_cpu_to_dram_requests_to_target_node[]={
1168 { .uname = "LOCAL_TO_0",
1169 .udesc = "From Local node to Node 0",
1172 { .uname = "LOCAL_TO_1",
1173 .udesc = "From Local node to Node 1",
1176 { .uname = "LOCAL_TO_2",
1177 .udesc = "From Local node to Node 2",
1180 { .uname = "LOCAL_TO_3",
1181 .udesc = "From Local node to Node 3",
1184 { .uname = "LOCAL_TO_4",
1185 .udesc = "From Local node to Node 4",
1188 { .uname = "LOCAL_TO_5",
1189 .udesc = "From Local node to Node 5",
1192 { .uname = "LOCAL_TO_6",
1193 .udesc = "From Local node to Node 6",
1196 { .uname = "LOCAL_TO_7",
1197 .udesc = "From Local node to Node 7",
1201 .udesc = "All sub-events selected",
1203 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1207 static const amd64_umask_t amd64_fam10h_cpu_read_command_latency_to_target_node_0_3[]={
1208 { .uname = "READ_BLOCK",
1209 .udesc = "Read block",
1212 { .uname = "READ_BLOCK_SHARED",
1213 .udesc = "Read block shared",
1216 { .uname = "READ_BLOCK_MODIFIED",
1217 .udesc = "Read block modified",
1220 { .uname = "CHANGE_TO_DIRTY",
1221 .udesc = "Change-to-Dirty",
1224 { .uname = "LOCAL_TO_0",
1225 .udesc = "From Local node to Node 0",
1228 { .uname = "LOCAL_TO_1",
1229 .udesc = "From Local node to Node 1",
1232 { .uname = "LOCAL_TO_2",
1233 .udesc = "From Local node to Node 2",
1236 { .uname = "LOCAL_TO_3",
1237 .udesc = "From Local node to Node 3",
1241 .udesc = "All sub-events selected",
1243 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1247 static const amd64_umask_t amd64_fam10h_cpu_read_command_latency_to_target_node_4_7[]={
1248 { .uname = "READ_BLOCK",
1249 .udesc = "Read block",
1252 { .uname = "READ_BLOCK_SHARED",
1253 .udesc = "Read block shared",
1256 { .uname = "READ_BLOCK_MODIFIED",
1257 .udesc = "Read block modified",
1260 { .uname = "CHANGE_TO_DIRTY",
1261 .udesc = "Change-to-Dirty",
1264 { .uname = "LOCAL_TO_4",
1265 .udesc = "From Local node to Node 4",
1268 { .uname = "LOCAL_TO_5",
1269 .udesc = "From Local node to Node 5",
1272 { .uname = "LOCAL_TO_6",
1273 .udesc = "From Local node to Node 6",
1276 { .uname = "LOCAL_TO_7",
1277 .udesc = "From Local node to Node 7",
1281 .udesc = "All sub-events selected",
1283 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1287 static const amd64_umask_t amd64_fam10h_cpu_command_latency_to_target_node_0_3_4_7[]={
1288 { .uname = "READ_SIZED",
1289 .udesc = "Read Sized",
1292 { .uname = "WRITE_SIZED",
1293 .udesc = "Write Sized",
1296 { .uname = "VICTIM_BLOCK",
1297 .udesc = "Victim Block",
1300 { .uname = "NODE_GROUP_SELECT",
1301 .udesc = "Node Group Select. 0=Nodes 0-3. 1= Nodes 4-7.",
1304 { .uname = "LOCAL_TO_0_4",
1305 .udesc = "From Local node to Node 0/4",
1308 { .uname = "LOCAL_TO_1_5",
1309 .udesc = "From Local node to Node 1/5",
1312 { .uname = "LOCAL_TO_2_6",
1313 .udesc = "From Local node to Node 2/6",
1316 { .uname = "LOCAL_TO_3_7",
1317 .udesc = "From Local node to Node 3/7",
1321 .udesc = "All sub-events selected",
1323 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1327 static const amd64_umask_t amd64_fam10h_hypertransport_link0[]={
1328 { .uname = "COMMAND_DWORD_SENT",
1329 .udesc = "Command DWORD sent",
1333 { .uname = "DATA_DWORD_SENT",
1334 .udesc = "Data DWORD sent",
1338 { .uname = "BUFFER_RELEASE_DWORD_SENT",
1339 .udesc = "Buffer release DWORD sent",
1343 { .uname = "NOP_DWORD_SENT",
1344 .udesc = "Nop DW sent (idle)",
1348 { .uname = "ADDRESS_EXT_DWORD_SENT",
1349 .udesc = "Address extension DWORD sent",
1353 { .uname = "PER_PACKET_CRC_SENT",
1354 .udesc = "Per packet CRC sent",
1359 .udesc = "All sub-events selected",
1361 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1364 { .uname = "SUBLINK_MASK",
1365 .udesc = "SubLink Mask",
1367 .uflags= AMD64_FL_OMIT,
1372 static const amd64_umask_t amd64_fam10h_hypertransport_link3[]={
1373 { .uname = "COMMAND_DWORD_SENT",
1374 .udesc = "Command DWORD sent",
1378 { .uname = "DATA_DWORD_SENT",
1379 .udesc = "Data DWORD sent",
1383 { .uname = "BUFFER_RELEASE_DWORD_SENT",
1384 .udesc = "Buffer release DWORD sent",
1388 { .uname = "NOP_DWORD_SENT",
1389 .udesc = "Nop DW sent (idle)",
1393 { .uname = "ADDRESS_EXT_DWORD_SENT",
1394 .udesc = "Address DWORD sent",
1398 { .uname = "PER_PACKET_CRC_SENT",
1399 .udesc = "Per packet CRC sent",
1404 .udesc = "All sub-events selected",
1406 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1409 { .uname = "SUBLINK_MASK",
1410 .udesc = "SubLink Mask",
1412 .uflags= AMD64_FL_OMIT,
1417 static const amd64_umask_t amd64_fam10h_read_request_to_l3_cache[]={
1418 { .uname = "READ_BLOCK_EXCLUSIVE",
1419 .udesc = "Read Block Exclusive (Data cache read)",
1423 { .uname = "READ_BLOCK_SHARED",
1424 .udesc = "Read Block Shared (Instruction cache read)",
1428 { .uname = "READ_BLOCK_MODIFY",
1429 .udesc = "Read Block Modify",
1433 { .uname = "ANY_READ",
1434 .udesc = "Any read modes (exclusive, shared, modify)",
1436 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1439 { .uname = "ALL_CORES",
1440 .udesc = "All sub-events selected",
1442 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1447 static const amd64_umask_t amd64_fam10h_l3_cache_misses[]={
1448 { .uname = "READ_BLOCK_EXCLUSIVE",
1449 .udesc = "Read Block Exclusive (Data cache read)",
1453 { .uname = "READ_BLOCK_SHARED",
1454 .udesc = "Read Block Shared (Instruction cache read)",
1458 { .uname = "READ_BLOCK_MODIFY",
1459 .udesc = "Read Block Modify",
1463 { .uname = "ANY_READ",
1464 .udesc = "Any read modes (exclusive, shared, modify)",
1466 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1469 { .uname = "ALL_CORES",
1470 .udesc = "All cores",
1472 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1477 static const amd64_umask_t amd64_fam10h_l3_fills_caused_by_l2_evictions[]={
1478 { .uname = "SHARED",
1483 { .uname = "EXCLUSIVE",
1484 .udesc = "Exclusive",
1493 { .uname = "MODIFIED",
1494 .udesc = "Modified",
1498 { .uname = "ANY_STATE",
1499 .udesc = "Any line state (shared, owned, exclusive, modified)",
1501 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1504 { .uname = "ALL_CORES",
1505 .udesc = "All cores",
1507 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1512 static const amd64_umask_t amd64_fam10h_l3_evictions[]={
1513 { .uname = "SHARED",
1517 { .uname = "EXCLUSIVE",
1518 .udesc = "Exclusive",
1525 { .uname = "MODIFIED",
1526 .udesc = "Modified",
1530 .udesc = "All sub-events selected",
1532 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1536 static const amd64_umask_t amd64_fam10h_page_size_mismatches[]={
1537 { .uname = "GUEST_LARGER",
1538 .udesc = "Guest page size is larger than the host page size.",
1541 { .uname = "MTRR_MISMATCH",
1542 .udesc = "MTRR mismatch.",
1545 { .uname = "HOST_LARGER",
1546 .udesc = "Host page size is larger than the guest page size.",
1550 .udesc = "All sub-events selected",
1552 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1556 static const amd64_umask_t amd64_fam10h_retired_x87_ops[]={
1557 { .uname = "ADD_SUB_OPS",
1558 .udesc = "Add/subtract ops",
1561 { .uname = "MUL_OPS",
1562 .udesc = "Multiply ops",
1565 { .uname = "DIV_OPS",
1566 .udesc = "Divide ops",
1570 .udesc = "All sub-events selected",
1572 .uflags= AMD64_FL_NCOMBO | AMD64_FL_DFL,
1576 static const amd64_entry_t amd64_fam10h_pe[]={
1577 { .name = "DISPATCHED_FPU",
1578 .desc = "Dispatched FPU Operations",
1579 .modmsk = AMD64_FAM10H_ATTRS,
1581 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_dispatched_fpu),
1583 .umasks = amd64_fam10h_dispatched_fpu,
1585 { .name = "CYCLES_NO_FPU_OPS_RETIRED",
1586 .desc = "Cycles in which the FPU is Empty",
1587 .modmsk = AMD64_FAM10H_ATTRS,
1590 { .name = "DISPATCHED_FPU_OPS_FAST_FLAG",
1591 .desc = "Dispatched Fast Flag FPU Operations",
1592 .modmsk = AMD64_FAM10H_ATTRS,
1595 { .name = "RETIRED_SSE_OPERATIONS",
1596 .desc = "Retired SSE Operations",
1597 .modmsk = AMD64_FAM10H_ATTRS,
1599 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_sse_operations),
1601 .umasks = amd64_fam10h_retired_sse_operations,
1603 { .name = "RETIRED_MOVE_OPS",
1604 .desc = "Retired Move Ops",
1605 .modmsk = AMD64_FAM10H_ATTRS,
1607 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_move_ops),
1609 .umasks = amd64_fam10h_retired_move_ops,
1611 { .name = "RETIRED_SERIALIZING_OPS",
1612 .desc = "Retired Serializing Ops",
1613 .modmsk = AMD64_FAM10H_ATTRS,
1615 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_serializing_ops),
1617 .umasks = amd64_fam10h_retired_serializing_ops,
1619 { .name = "FP_SCHEDULER_CYCLES",
1620 .desc = "Number of Cycles that a Serializing uop is in the FP Scheduler",
1621 .modmsk = AMD64_FAM10H_ATTRS,
1623 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_fp_scheduler_cycles),
1625 .umasks = amd64_fam10h_fp_scheduler_cycles,
1627 { .name = "SEGMENT_REGISTER_LOADS",
1628 .desc = "Segment Register Loads",
1629 .modmsk = AMD64_FAM10H_ATTRS,
1631 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_segment_register_loads),
1633 .umasks = amd64_fam10h_segment_register_loads,
1635 { .name = "PIPELINE_RESTART_DUE_TO_SELF_MODIFYING_CODE",
1636 .desc = "Pipeline Restart Due to Self-Modifying Code",
1637 .modmsk = AMD64_FAM10H_ATTRS,
1640 { .name = "PIPELINE_RESTART_DUE_TO_PROBE_HIT",
1641 .desc = "Pipeline Restart Due to Probe Hit",
1642 .modmsk = AMD64_FAM10H_ATTRS,
1645 { .name = "LS_BUFFER_2_FULL_CYCLES",
1646 .desc = "LS Buffer 2 Full",
1647 .modmsk = AMD64_FAM10H_ATTRS,
1650 { .name = "LOCKED_OPS",
1651 .desc = "Locked Operations",
1652 .modmsk = AMD64_FAM10H_ATTRS,
1654 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_locked_ops),
1656 .umasks = amd64_fam10h_locked_ops,
1658 { .name = "RETIRED_CLFLUSH_INSTRUCTIONS",
1659 .desc = "Retired CLFLUSH Instructions",
1660 .modmsk = AMD64_FAM10H_ATTRS,
1663 { .name = "RETIRED_CPUID_INSTRUCTIONS",
1664 .desc = "Retired CPUID Instructions",
1665 .modmsk = AMD64_FAM10H_ATTRS,
1668 { .name = "CANCELLED_STORE_TO_LOAD_FORWARD_OPERATIONS",
1669 .desc = "Cancelled Store to Load Forward Operations",
1670 .modmsk = AMD64_FAM10H_ATTRS,
1672 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cancelled_store_to_load_forward_operations),
1674 .umasks = amd64_fam10h_cancelled_store_to_load_forward_operations,
1676 { .name = "SMIS_RECEIVED",
1677 .desc = "SMIs Received",
1678 .modmsk = AMD64_FAM10H_ATTRS,
1681 { .name = "DATA_CACHE_ACCESSES",
1682 .desc = "Data Cache Accesses",
1683 .modmsk = AMD64_FAM10H_ATTRS,
1686 { .name = "DATA_CACHE_MISSES",
1687 .desc = "Data Cache Misses",
1688 .modmsk = AMD64_FAM10H_ATTRS,
1691 { .name = "DATA_CACHE_REFILLS",
1692 .desc = "Data Cache Refills from L2 or Northbridge",
1693 .modmsk = AMD64_FAM10H_ATTRS,
1695 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_data_cache_refills),
1697 .umasks = amd64_fam10h_data_cache_refills,
1699 { .name = "DATA_CACHE_REFILLS_FROM_SYSTEM",
1700 .desc = "Data Cache Refills from the Northbridge",
1701 .modmsk = AMD64_FAM10H_ATTRS,
1703 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_data_cache_refills_from_system),
1705 .umasks = amd64_fam10h_data_cache_refills_from_system,
1707 { .name = "DATA_CACHE_LINES_EVICTED",
1708 .desc = "Data Cache Lines Evicted",
1709 .modmsk = AMD64_FAM10H_ATTRS,
1711 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_data_cache_lines_evicted),
1713 .umasks = amd64_fam10h_data_cache_lines_evicted,
1715 { .name = "L1_DTLB_MISS_AND_L2_DTLB_HIT",
1716 .desc = "L1 DTLB Miss and L2 DTLB Hit",
1717 .modmsk = AMD64_FAM10H_ATTRS,
1719 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l1_dtlb_miss_and_l2_dtlb_hit),
1721 .umasks = amd64_fam10h_l1_dtlb_miss_and_l2_dtlb_hit,
1723 { .name = "L1_DTLB_AND_L2_DTLB_MISS",
1724 .desc = "L1 DTLB and L2 DTLB Miss",
1725 .modmsk = AMD64_FAM10H_ATTRS,
1727 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l1_dtlb_and_l2_dtlb_miss),
1729 .umasks = amd64_fam10h_l1_dtlb_and_l2_dtlb_miss,
1731 { .name = "MISALIGNED_ACCESSES",
1732 .desc = "Misaligned Accesses",
1733 .modmsk = AMD64_FAM10H_ATTRS,
1736 { .name = "MICROARCHITECTURAL_LATE_CANCEL_OF_AN_ACCESS",
1737 .desc = "Microarchitectural Late Cancel of an Access",
1738 .modmsk = AMD64_FAM10H_ATTRS,
1741 { .name = "MICROARCHITECTURAL_EARLY_CANCEL_OF_AN_ACCESS",
1742 .desc = "Microarchitectural Early Cancel of an Access",
1743 .modmsk = AMD64_FAM10H_ATTRS,
1746 { .name = "SCRUBBER_SINGLE_BIT_ECC_ERRORS",
1747 .desc = "Single-bit ECC Errors Recorded by Scrubber",
1748 .modmsk = AMD64_FAM10H_ATTRS,
1750 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_scrubber_single_bit_ecc_errors),
1752 .umasks = amd64_fam10h_scrubber_single_bit_ecc_errors,
1754 { .name = "PREFETCH_INSTRUCTIONS_DISPATCHED",
1755 .desc = "Prefetch Instructions Dispatched",
1756 .modmsk = AMD64_FAM10H_ATTRS,
1758 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_prefetch_instructions_dispatched),
1760 .umasks = amd64_fam10h_prefetch_instructions_dispatched,
1762 { .name = "DCACHE_MISSES_BY_LOCKED_INSTRUCTIONS",
1763 .desc = "DCACHE Misses by Locked Instructions",
1764 .modmsk = AMD64_FAM10H_ATTRS,
1766 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_dcache_misses_by_locked_instructions),
1768 .umasks = amd64_fam10h_dcache_misses_by_locked_instructions,
1770 { .name = "L1_DTLB_HIT",
1771 .desc = "L1 DTLB Hit",
1772 .modmsk = AMD64_FAM10H_ATTRS,
1774 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l1_dtlb_hit),
1776 .umasks = amd64_fam10h_l1_dtlb_hit,
1778 { .name = "INEFFECTIVE_SW_PREFETCHES",
1779 .desc = "Ineffective Software Prefetches",
1780 .modmsk = AMD64_FAM10H_ATTRS,
1782 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_ineffective_sw_prefetches),
1784 .umasks = amd64_fam10h_ineffective_sw_prefetches,
1786 { .name = "GLOBAL_TLB_FLUSHES",
1787 .desc = "Global TLB Flushes",
1788 .modmsk = AMD64_FAM10H_ATTRS,
1791 { .name = "MEMORY_REQUESTS",
1792 .desc = "Memory Requests by Type",
1793 .modmsk = AMD64_FAM10H_ATTRS,
1795 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_requests),
1797 .umasks = amd64_fam10h_memory_requests,
1799 { .name = "DATA_PREFETCHES",
1800 .desc = "Data Prefetcher",
1801 .modmsk = AMD64_FAM10H_ATTRS,
1803 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_data_prefetches),
1805 .umasks = amd64_fam10h_data_prefetches,
1807 { .name = "MAB_REQUESTS",
1808 .desc = "Average L1 refill latency for Icache and Dcache misses (request count for cache refills)",
1809 .modmsk = AMD64_FAM10H_ATTRS,
1811 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_mab_requests),
1813 .umasks = amd64_fam10h_mab_requests,
1815 { .name = "MAB_WAIT_CYCLES",
1816 .desc = "Average L1 refill latency for Icache and Dcache misses (cycles that requests spent waiting for the refills)",
1817 .modmsk = AMD64_FAM10H_ATTRS,
1819 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_mab_requests),
1821 .umasks = amd64_fam10h_mab_requests, /* identical to actual umasks list for this event */
1823 { .name = "SYSTEM_READ_RESPONSES",
1824 .desc = "Northbridge Read Responses by Coherency State",
1825 .modmsk = AMD64_FAM10H_ATTRS,
1827 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_system_read_responses),
1829 .umasks = amd64_fam10h_system_read_responses,
1831 { .name = "QUADWORDS_WRITTEN_TO_SYSTEM",
1832 .desc = "Octwords Written to System",
1833 .modmsk = AMD64_FAM10H_ATTRS,
1835 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_quadwords_written_to_system),
1837 .umasks = amd64_fam10h_quadwords_written_to_system,
1839 { .name = "CPU_CLK_UNHALTED",
1840 .desc = "CPU Clocks not Halted",
1841 .modmsk = AMD64_FAM10H_ATTRS,
1844 { .name = "REQUESTS_TO_L2",
1845 .desc = "Requests to L2 Cache",
1846 .modmsk = AMD64_FAM10H_ATTRS,
1848 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_requests_to_l2),
1850 .umasks = amd64_fam10h_requests_to_l2,
1852 { .name = "L2_CACHE_MISS",
1853 .desc = "L2 Cache Misses",
1854 .modmsk = AMD64_FAM10H_ATTRS,
1856 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l2_cache_miss),
1858 .umasks = amd64_fam10h_l2_cache_miss,
1860 { .name = "L2_FILL_WRITEBACK",
1861 .desc = "L2 Fill/Writeback",
1862 .modmsk = AMD64_FAM10H_ATTRS,
1864 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l2_fill_writeback),
1866 .umasks = amd64_fam10h_l2_fill_writeback,
1868 { .name = "INSTRUCTION_CACHE_FETCHES",
1869 .desc = "Instruction Cache Fetches",
1870 .modmsk = AMD64_FAM10H_ATTRS,
1873 { .name = "INSTRUCTION_CACHE_MISSES",
1874 .desc = "Instruction Cache Misses",
1875 .modmsk = AMD64_FAM10H_ATTRS,
1878 { .name = "INSTRUCTION_CACHE_REFILLS_FROM_L2",
1879 .desc = "Instruction Cache Refills from L2",
1880 .modmsk = AMD64_FAM10H_ATTRS,
1883 { .name = "INSTRUCTION_CACHE_REFILLS_FROM_SYSTEM",
1884 .desc = "Instruction Cache Refills from System",
1885 .modmsk = AMD64_FAM10H_ATTRS,
1888 { .name = "L1_ITLB_MISS_AND_L2_ITLB_HIT",
1889 .desc = "L1 ITLB Miss and L2 ITLB Hit",
1890 .modmsk = AMD64_FAM10H_ATTRS,
1893 { .name = "L1_ITLB_MISS_AND_L2_ITLB_MISS",
1894 .desc = "L1 ITLB Miss and L2 ITLB Miss",
1895 .modmsk = AMD64_FAM10H_ATTRS,
1897 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l1_itlb_miss_and_l2_itlb_miss),
1899 .umasks = amd64_fam10h_l1_itlb_miss_and_l2_itlb_miss,
1901 { .name = "PIPELINE_RESTART_DUE_TO_INSTRUCTION_STREAM_PROBE",
1902 .desc = "Pipeline Restart Due to Instruction Stream Probe",
1903 .modmsk = AMD64_FAM10H_ATTRS,
1906 { .name = "INSTRUCTION_FETCH_STALL",
1907 .desc = "Instruction Fetch Stall",
1908 .modmsk = AMD64_FAM10H_ATTRS,
1911 { .name = "RETURN_STACK_HITS",
1912 .desc = "Return Stack Hits",
1913 .modmsk = AMD64_FAM10H_ATTRS,
1916 { .name = "RETURN_STACK_OVERFLOWS",
1917 .desc = "Return Stack Overflows",
1918 .modmsk = AMD64_FAM10H_ATTRS,
1921 { .name = "INSTRUCTION_CACHE_VICTIMS",
1922 .desc = "Instruction Cache Victims",
1923 .modmsk = AMD64_FAM10H_ATTRS,
1926 { .name = "INSTRUCTION_CACHE_LINES_INVALIDATED",
1927 .desc = "Instruction Cache Lines Invalidated",
1928 .modmsk = AMD64_FAM10H_ATTRS,
1930 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_instruction_cache_lines_invalidated),
1932 .umasks = amd64_fam10h_instruction_cache_lines_invalidated,
1934 { .name = "ITLB_RELOADS",
1935 .desc = "ITLB Reloads",
1936 .modmsk = AMD64_FAM10H_ATTRS,
1939 { .name = "ITLB_RELOADS_ABORTED",
1940 .desc = "ITLB Reloads Aborted",
1941 .modmsk = AMD64_FAM10H_ATTRS,
1944 { .name = "RETIRED_INSTRUCTIONS",
1945 .desc = "Retired Instructions",
1946 .modmsk = AMD64_FAM10H_ATTRS,
1949 { .name = "RETIRED_UOPS",
1950 .desc = "Retired uops",
1951 .modmsk = AMD64_FAM10H_ATTRS,
1954 { .name = "RETIRED_BRANCH_INSTRUCTIONS",
1955 .desc = "Retired Branch Instructions",
1956 .modmsk = AMD64_FAM10H_ATTRS,
1959 { .name = "RETIRED_MISPREDICTED_BRANCH_INSTRUCTIONS",
1960 .desc = "Retired Mispredicted Branch Instructions",
1961 .modmsk = AMD64_FAM10H_ATTRS,
1964 { .name = "RETIRED_TAKEN_BRANCH_INSTRUCTIONS",
1965 .desc = "Retired Taken Branch Instructions",
1966 .modmsk = AMD64_FAM10H_ATTRS,
1969 { .name = "RETIRED_TAKEN_BRANCH_INSTRUCTIONS_MISPREDICTED",
1970 .desc = "Retired Taken Branch Instructions Mispredicted",
1971 .modmsk = AMD64_FAM10H_ATTRS,
1974 { .name = "RETIRED_FAR_CONTROL_TRANSFERS",
1975 .desc = "Retired Far Control Transfers",
1976 .modmsk = AMD64_FAM10H_ATTRS,
1979 { .name = "RETIRED_BRANCH_RESYNCS",
1980 .desc = "Retired Branch Resyncs",
1981 .modmsk = AMD64_FAM10H_ATTRS,
1984 { .name = "RETIRED_NEAR_RETURNS",
1985 .desc = "Retired Near Returns",
1986 .modmsk = AMD64_FAM10H_ATTRS,
1989 { .name = "RETIRED_NEAR_RETURNS_MISPREDICTED",
1990 .desc = "Retired Near Returns Mispredicted",
1991 .modmsk = AMD64_FAM10H_ATTRS,
1994 { .name = "RETIRED_INDIRECT_BRANCHES_MISPREDICTED",
1995 .desc = "Retired Indirect Branches Mispredicted",
1996 .modmsk = AMD64_FAM10H_ATTRS,
1999 { .name = "RETIRED_MMX_AND_FP_INSTRUCTIONS",
2000 .desc = "Retired MMX/FP Instructions",
2001 .modmsk = AMD64_FAM10H_ATTRS,
2003 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_mmx_and_fp_instructions),
2005 .umasks = amd64_fam10h_retired_mmx_and_fp_instructions,
2007 { .name = "RETIRED_FASTPATH_DOUBLE_OP_INSTRUCTIONS",
2008 .desc = "Retired Fastpath Double Op Instructions",
2009 .modmsk = AMD64_FAM10H_ATTRS,
2011 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_fastpath_double_op_instructions),
2013 .umasks = amd64_fam10h_retired_fastpath_double_op_instructions,
2015 { .name = "INTERRUPTS_MASKED_CYCLES",
2016 .desc = "Interrupts-Masked Cycles",
2017 .modmsk = AMD64_FAM10H_ATTRS,
2020 { .name = "INTERRUPTS_MASKED_CYCLES_WITH_INTERRUPT_PENDING",
2021 .desc = "Interrupts-Masked Cycles with Interrupt Pending",
2022 .modmsk = AMD64_FAM10H_ATTRS,
2025 { .name = "INTERRUPTS_TAKEN",
2026 .desc = "Interrupts Taken",
2027 .modmsk = AMD64_FAM10H_ATTRS,
2030 { .name = "DECODER_EMPTY",
2031 .desc = "Decoder Empty",
2032 .modmsk = AMD64_FAM10H_ATTRS,
2035 { .name = "DISPATCH_STALLS",
2036 .desc = "Dispatch Stalls",
2037 .modmsk = AMD64_FAM10H_ATTRS,
2040 { .name = "DISPATCH_STALL_FOR_BRANCH_ABORT",
2041 .desc = "Dispatch Stall for Branch Abort to Retire",
2042 .modmsk = AMD64_FAM10H_ATTRS,
2045 { .name = "DISPATCH_STALL_FOR_SERIALIZATION",
2046 .desc = "Dispatch Stall for Serialization",
2047 .modmsk = AMD64_FAM10H_ATTRS,
2050 { .name = "DISPATCH_STALL_FOR_SEGMENT_LOAD",
2051 .desc = "Dispatch Stall for Segment Load",
2052 .modmsk = AMD64_FAM10H_ATTRS,
2055 { .name = "DISPATCH_STALL_FOR_REORDER_BUFFER_FULL",
2056 .desc = "Dispatch Stall for Reorder Buffer Full",
2057 .modmsk = AMD64_FAM10H_ATTRS,
2060 { .name = "DISPATCH_STALL_FOR_RESERVATION_STATION_FULL",
2061 .desc = "Dispatch Stall for Reservation Station Full",
2062 .modmsk = AMD64_FAM10H_ATTRS,
2065 { .name = "DISPATCH_STALL_FOR_FPU_FULL",
2066 .desc = "Dispatch Stall for FPU Full",
2067 .modmsk = AMD64_FAM10H_ATTRS,
2070 { .name = "DISPATCH_STALL_FOR_LS_FULL",
2071 .desc = "Dispatch Stall for LS Full",
2072 .modmsk = AMD64_FAM10H_ATTRS,
2075 { .name = "DISPATCH_STALL_WAITING_FOR_ALL_QUIET",
2076 .desc = "Dispatch Stall Waiting for All Quiet",
2077 .modmsk = AMD64_FAM10H_ATTRS,
2080 { .name = "DISPATCH_STALL_FOR_FAR_TRANSFER_OR_RSYNC",
2081 .desc = "Dispatch Stall for Far Transfer or Resync to Retire",
2082 .modmsk = AMD64_FAM10H_ATTRS,
2085 { .name = "FPU_EXCEPTIONS",
2086 .desc = "FPU Exceptions",
2087 .modmsk = AMD64_FAM10H_ATTRS,
2089 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_fpu_exceptions),
2091 .umasks = amd64_fam10h_fpu_exceptions,
2093 { .name = "DR0_BREAKPOINT_MATCHES",
2094 .desc = "DR0 Breakpoint Matches",
2095 .modmsk = AMD64_FAM10H_ATTRS,
2098 { .name = "DR1_BREAKPOINT_MATCHES",
2099 .desc = "DR1 Breakpoint Matches",
2100 .modmsk = AMD64_FAM10H_ATTRS,
2103 { .name = "DR2_BREAKPOINT_MATCHES",
2104 .desc = "DR2 Breakpoint Matches",
2105 .modmsk = AMD64_FAM10H_ATTRS,
2108 { .name = "DR3_BREAKPOINT_MATCHES",
2109 .desc = "DR3 Breakpoint Matches",
2110 .modmsk = AMD64_FAM10H_ATTRS,
2113 { .name = "DRAM_ACCESSES_PAGE",
2114 .desc = "DRAM Accesses",
2115 .modmsk = AMD64_FAM10H_ATTRS,
2117 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_dram_accesses_page),
2119 .umasks = amd64_fam10h_dram_accesses_page,
2121 { .name = "MEMORY_CONTROLLER_PAGE_TABLE_OVERFLOWS",
2122 .desc = "DRAM Controller Page Table Overflows",
2123 .modmsk = AMD64_FAM10H_ATTRS,
2125 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_controller_page_table_overflows),
2127 .umasks = amd64_fam10h_memory_controller_page_table_overflows,
2129 { .name = "MEMORY_CONTROLLER_SLOT_MISSES",
2130 .desc = "Memory Controller DRAM Command Slots Missed",
2131 .modmsk = AMD64_FAM10H_ATTRS,
2133 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_controller_slot_misses),
2135 .umasks = amd64_fam10h_memory_controller_slot_misses,
2137 { .name = "MEMORY_CONTROLLER_TURNAROUNDS",
2138 .desc = "Memory Controller Turnarounds",
2139 .modmsk = AMD64_FAM10H_ATTRS,
2141 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_controller_turnarounds),
2143 .umasks = amd64_fam10h_memory_controller_turnarounds,
2145 { .name = "MEMORY_CONTROLLER_BYPASS",
2146 .desc = "Memory Controller Bypass Counter Saturation",
2147 .modmsk = AMD64_FAM10H_ATTRS,
2149 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_controller_bypass),
2151 .umasks = amd64_fam10h_memory_controller_bypass,
2153 { .name = "THERMAL_STATUS_AND_ECC_ERRORS",
2154 .desc = "Thermal Status",
2155 .modmsk = AMD64_FAM10H_ATTRS,
2157 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_thermal_status_and_ecc_errors),
2159 .umasks = amd64_fam10h_thermal_status_and_ecc_errors,
2161 { .name = "CPU_IO_REQUESTS_TO_MEMORY_IO",
2162 .desc = "CPU/IO Requests to Memory/IO",
2163 .modmsk = AMD64_FAM10H_ATTRS,
2165 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_io_requests_to_memory_io),
2167 .umasks = amd64_fam10h_cpu_io_requests_to_memory_io,
2169 { .name = "CACHE_BLOCK",
2170 .desc = "Cache Block Commands",
2171 .modmsk = AMD64_FAM10H_ATTRS,
2173 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cache_block),
2175 .umasks = amd64_fam10h_cache_block,
2177 { .name = "SIZED_COMMANDS",
2178 .desc = "Sized Commands",
2179 .modmsk = AMD64_FAM10H_ATTRS,
2181 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_sized_commands),
2183 .umasks = amd64_fam10h_sized_commands,
2186 .desc = "Probe Responses and Upstream Requests",
2187 .modmsk = AMD64_FAM10H_ATTRS,
2189 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_probe),
2191 .umasks = amd64_fam10h_probe,
2194 .desc = "GART Events",
2195 .modmsk = AMD64_FAM10H_ATTRS,
2197 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_gart),
2199 .umasks = amd64_fam10h_gart,
2201 { .name = "MEMORY_CONTROLLER_REQUESTS",
2202 .desc = "Memory Controller Requests",
2203 .modmsk = AMD64_FAM10H_ATTRS,
2205 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_memory_controller_requests),
2207 .umasks = amd64_fam10h_memory_controller_requests,
2209 { .name = "CPU_TO_DRAM_REQUESTS_TO_TARGET_NODE",
2210 .desc = "CPU to DRAM Requests to Target Node",
2211 .modmsk = AMD64_FAM10H_ATTRS,
2213 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_to_dram_requests_to_target_node),
2215 .umasks = amd64_fam10h_cpu_to_dram_requests_to_target_node,
2217 { .name = "IO_TO_DRAM_REQUESTS_TO_TARGET_NODE",
2218 .desc = "IO to DRAM Requests to Target Node",
2219 .modmsk = AMD64_FAM10H_ATTRS,
2221 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_to_dram_requests_to_target_node),
2223 .umasks = amd64_fam10h_cpu_to_dram_requests_to_target_node, /* identical to actual umasks list for this event */
2225 { .name = "CPU_READ_COMMAND_LATENCY_TO_TARGET_NODE_0_3",
2226 .desc = "CPU Read Command Latency to Target Node 0-3",
2227 .modmsk = AMD64_FAM10H_ATTRS,
2229 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_read_command_latency_to_target_node_0_3),
2231 .umasks = amd64_fam10h_cpu_read_command_latency_to_target_node_0_3,
2233 { .name = "CPU_READ_COMMAND_REQUESTS_TO_TARGET_NODE_0_3",
2234 .desc = "CPU Read Command Requests to Target Node 0-3",
2235 .modmsk = AMD64_FAM10H_ATTRS,
2237 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_read_command_latency_to_target_node_0_3),
2239 .umasks = amd64_fam10h_cpu_read_command_latency_to_target_node_0_3, /* identical to actual umasks list for this event */
2241 { .name = "CPU_READ_COMMAND_LATENCY_TO_TARGET_NODE_4_7",
2242 .desc = "CPU Read Command Latency to Target Node 4-7",
2243 .modmsk = AMD64_FAM10H_ATTRS,
2245 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_read_command_latency_to_target_node_4_7),
2247 .umasks = amd64_fam10h_cpu_read_command_latency_to_target_node_4_7,
2249 { .name = "CPU_READ_COMMAND_REQUESTS_TO_TARGET_NODE_4_7",
2250 .desc = "CPU Read Command Requests to Target Node 4-7",
2251 .modmsk = AMD64_FAM10H_ATTRS,
2253 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_read_command_latency_to_target_node_4_7),
2255 .umasks = amd64_fam10h_cpu_read_command_latency_to_target_node_4_7, /* identical to actual umasks list for this event */
2257 { .name = "CPU_COMMAND_LATENCY_TO_TARGET_NODE_0_3_4_7",
2258 .desc = "CPU Command Latency to Target Node 0-3/4-7",
2259 .modmsk = AMD64_FAM10H_ATTRS,
2261 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_command_latency_to_target_node_0_3_4_7),
2263 .umasks = amd64_fam10h_cpu_command_latency_to_target_node_0_3_4_7,
2265 { .name = "CPU_REQUESTS_TO_TARGET_NODE_0_3_4_7",
2266 .desc = "CPU Requests to Target Node 0-3/4-7",
2267 .modmsk = AMD64_FAM10H_ATTRS,
2269 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_cpu_command_latency_to_target_node_0_3_4_7),
2271 .umasks = amd64_fam10h_cpu_command_latency_to_target_node_0_3_4_7, /* identical to actual umasks list for this event */
2273 { .name = "HYPERTRANSPORT_LINK0",
2274 .desc = "HyperTransport Link 0 Transmit Bandwidth",
2275 .modmsk = AMD64_FAM10H_ATTRS,
2277 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_hypertransport_link0),
2279 .umasks = amd64_fam10h_hypertransport_link0,
2281 { .name = "HYPERTRANSPORT_LINK1",
2282 .desc = "HyperTransport Link 1 Transmit Bandwidth",
2283 .modmsk = AMD64_FAM10H_ATTRS,
2285 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_hypertransport_link0),
2287 .umasks = amd64_fam10h_hypertransport_link0, /* identical to actual umasks list for this event */
2289 { .name = "HYPERTRANSPORT_LINK2",
2290 .desc = "HyperTransport Link 2 Transmit Bandwidth",
2291 .modmsk = AMD64_FAM10H_ATTRS,
2293 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_hypertransport_link0),
2295 .umasks = amd64_fam10h_hypertransport_link0, /* identical to actual umasks list for this event */
2297 { .name = "HYPERTRANSPORT_LINK3",
2298 .desc = "HyperTransport Link 3 Transmit Bandwidth",
2299 .modmsk = AMD64_FAM10H_ATTRS,
2301 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_hypertransport_link3),
2303 .umasks = amd64_fam10h_hypertransport_link3,
2305 { .name = "READ_REQUEST_TO_L3_CACHE",
2306 .desc = "Read Request to L3 Cache",
2307 .modmsk = AMD64_FAM10H_ATTRS,
2309 .flags = AMD64_FL_TILL_FAM10H_REV_C,
2310 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_read_request_to_l3_cache),
2312 .umasks = amd64_fam10h_read_request_to_l3_cache,
2314 { .name = "L3_CACHE_MISSES",
2315 .desc = "L3 Cache Misses",
2316 .modmsk = AMD64_FAM10H_ATTRS,
2318 .flags = AMD64_FL_TILL_FAM10H_REV_C,
2319 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_cache_misses),
2321 .umasks = amd64_fam10h_l3_cache_misses,
2323 { .name = "L3_FILLS_CAUSED_BY_L2_EVICTIONS",
2324 .desc = "L3 Fills caused by L2 Evictions",
2325 .modmsk = AMD64_FAM10H_ATTRS,
2327 .flags = AMD64_FL_TILL_FAM10H_REV_C,
2328 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_fills_caused_by_l2_evictions),
2330 .umasks = amd64_fam10h_l3_fills_caused_by_l2_evictions,
2332 { .name = "L3_EVICTIONS",
2333 .desc = "L3 Evictions",
2334 .modmsk = AMD64_FAM10H_ATTRS,
2336 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_evictions),
2338 .umasks = amd64_fam10h_l3_evictions,
2340 { .name = "PAGE_SIZE_MISMATCHES",
2341 .desc = "Page Size Mismatches",
2342 .modmsk = AMD64_FAM10H_ATTRS,
2344 .flags = AMD64_FL_FAM10H_REV_C,
2345 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_page_size_mismatches),
2347 .umasks = amd64_fam10h_page_size_mismatches,
2349 { .name = "RETIRED_X87_OPS",
2350 .desc = "Retired x87 Floating Point Operations",
2351 .modmsk = AMD64_FAM10H_ATTRS,
2353 .flags = AMD64_FL_FAM10H_REV_C,
2354 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_retired_x87_ops),
2356 .umasks = amd64_fam10h_retired_x87_ops,
2358 { .name = "IBS_OPS_TAGGED",
2359 .desc = "IBS Ops Tagged",
2360 .modmsk = AMD64_FAM10H_ATTRS,
2362 .flags = AMD64_FL_FAM10H_REV_C,
2364 { .name = "LFENCE_INST_RETIRED",
2365 .desc = "LFENCE Instructions Retired",
2366 .modmsk = AMD64_FAM10H_ATTRS,
2368 .flags = AMD64_FL_FAM10H_REV_C,
2370 { .name = "SFENCE_INST_RETIRED",
2371 .desc = "SFENCE Instructions Retired",
2372 .modmsk = AMD64_FAM10H_ATTRS,
2374 .flags = AMD64_FL_FAM10H_REV_C,
2376 { .name = "MFENCE_INST_RETIRED",
2377 .desc = "MFENCE Instructions Retired",
2378 .modmsk = AMD64_FAM10H_ATTRS,
2380 .flags = AMD64_FL_FAM10H_REV_C,
2382 { .name = "READ_REQUEST_TO_L3_CACHE",
2383 .desc = "Read Request to L3 Cache",
2384 .modmsk = AMD64_FAM10H_ATTRS,
2386 .flags = AMD64_FL_FAM10H_REV_D,
2387 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_cache_misses),
2389 .umasks = amd64_fam10h_l3_cache_misses, /* identical to actual umasks list for this event */
2391 { .name = "L3_CACHE_MISSES",
2392 .desc = "L3 Cache Misses",
2393 .modmsk = AMD64_FAM10H_ATTRS,
2395 .flags = AMD64_FL_FAM10H_REV_D,
2396 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_cache_misses),
2398 .umasks = amd64_fam10h_l3_cache_misses, /* identical to actual umasks list for this event */
2400 { .name = "L3_FILLS_CAUSED_BY_L2_EVICTIONS",
2401 .desc = "L3 Fills caused by L2 Evictions",
2402 .modmsk = AMD64_FAM10H_ATTRS,
2404 .flags = AMD64_FL_FAM10H_REV_D,
2405 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_fills_caused_by_l2_evictions),
2407 .umasks = amd64_fam10h_l3_fills_caused_by_l2_evictions, /* identical to actual umasks list for this event */
2409 { .name = "NON_CANCELLED_L3_READ_REQUESTS",
2410 .desc = "Non-cancelled L3 Read Requests",
2411 .modmsk = AMD64_FAM10H_ATTRS,
2413 .flags = AMD64_FL_FAM10H_REV_D,
2414 .numasks = LIBPFM_ARRAY_SIZE(amd64_fam10h_l3_cache_misses),
2416 .umasks = amd64_fam10h_l3_cache_misses, /* identical to actual umasks list for this event */